
由于在我的一个程序中想要添加一个截图功能,今天看一下利用Python怎样截图,功能实现都挺简单了,直接上代码
from PIL import ImageGrab
im = ImageGrabgrab()
imsave(addr,'jpeg')
很简单的几行代码就实现了我要的功能,PIL(Python Image Library)是Python的一个图形库,需要自己下载安装,im = ImageGrabgrab()这行代码实现截图功能,可以带参数,指定要截取的坐标位置,不带参数默认全屏截图,imsave(addr,'jpeg')是保存截取的,第一个参数是保存路径,第二个参数是格式
aio>
爬虫框架需要URL、页面下载器、爬虫调度器、网页解析器、数据处理
爬虫框架要处理很多的URL,我们需要设计一个队列存储所有要处理的 URL,这种先进先出的数据结构非常符合这个需求。 将所有要下载的URL存储在待处理队列中,每次下载会取出一个,队列中就会少一个。我们知道有些URL的下载会有反爬虫策略,所以针对这些请求需要做一些特殊的设置,进而可以对URL进行封装抽出 Request。
页面下载器如果没有,用户就要编写网络请求的处理代码,这无疑对每个 URL 都是相同的动作。 所以在框架设计中我们直接加入它就好了,至于使用什么库来进行下载都是可以的,你可以用 >
爬虫调度器,调度器和我们在开发 web 应用中的控制器是一个类似的概念,它用于在下载器、解析器之间做流转处理。 解析器可以解析到更多的 URL 发送给调度器,调度器再次的传输给下载器,这样就会让各个组件有条不紊的进行工作。
网页解析器我们知道当一个页面下载完成后就是一段 HTML 的 DOM 字符串表示,但还需要提取出真正需要的数据以前的做法是通过String的API 或者正则表达式的方式在DOM 中搜寻,这样是很麻烦的,框架 应该提供一种合理、常用、方便的方式来帮助用户完成提取数据这件事儿。常用的手段是通过xpath或者css选择器从DOM中进行提取,而且学习这项技能在几乎所有的爬虫框架中都是适用的。
数据处理,普通的爬虫程序中是把网页解析器和数据处理器合在一起的,解析到数据后马上处理。 在一个标准化的爬虫程序中,他们应该是各司其职的,我们先通过解析器将需要的数据解析出来,可能是封装成对象。然后传递给数据处理器,处理器接收到数据后可能是存储到数据库,也可能通过接口发送给老王。
colour = input("Enter a colour:")#1 输入的是字符串不能用int转换成整数
if colour == 'black' or colour == 'white':#2 不能省略colour==
print("shade")
elif colour == 'red' or colour == 'blue' or colour == 'green':
print("primary colour")
else:#3 少了冒号,要加:'
choice = input("is this a colour") #4 没有用choice接收返回值
if choice == 'yes':
print("ok")
本文是接上一篇 ❤️Python从入门到精通(二十六)用Python的PIL库(Pillow)处理图像真的得心应手❤️ 进一步介绍Pillow库的使用, 本文将重点介绍一些高级特性:比如如何利用Pillow画图形(圆形,正方形),介绍通过Pillow库给添加水印;同时对上一篇文章未介绍的常用知识点进行补充说明。希望对读者朋友们有所帮助。
上一篇文章已经介绍了Image模块,但是介绍的还不够全面,例如如何从网页中读取没有介绍到,如何裁剪都没有介绍到。
读取网页中的的基本实现方式是:首先利用requests库读取当前链接的内容,接着将内容转成二进制数据,在通过open方法将该二进制数据,最后通过save方法进行保存。
读取结果是:
通过crop方法可以从中裁剪出一个指定大小的区域。裁取的区域范围是 (left, upper, right, lower) 比如从某个宽高都是400的中裁剪一个是宽高都是100的正方形区域,只需要指定裁剪区域的坐标是: (0, 0, 100, 100)
有裁剪还有一个方法就是重新设置大小的方法 resize,比如将前面400 400的 修改成 300 200,只需要调用resize方法
通过 convert方法进行模式的转换
前面介绍的ImageDraw库,只是介绍了利用它来向写入文本,其实ImageDraw模块还有一个更有用的途径,就是可以通过它来画各种图形。
首先创建一个600600的画布。然后再画布中画出一个正方形,画直线的方法是 line方法。
ImageDrawline(xy, fill=None, width=0, joint=None)
在xy的坐标之间画一条直线
xy--> 在两个坐标点之间画一条直线,坐标点的传入方式是[(x, y), (x, y), ]或者[x, y, x, y, ]
fill--> 直线的颜色
width--> 直线的宽度
画一个边框宽度为2px,颜色为蓝色的,面积为400400的正方形。
ImageDrawarc(xy, start, end, fill=None, width=0)
在给定的区域范围内,从开始角到结束角之间绘制一条圆弧
xy--> 定义边界框的两个点,传入的格式是[ (x0, y0), (x1, y1)] 或者 [x0, y0, x1, y1] ,其中 x1>=x0,y1>=y0
start --> 起始角度,以度为单位,从3点钟开始顺时针增加
end--> 结束角度,以度为单位
fill--> 弧线的颜色
width-->弧线的宽度
这里就是画了一个半圆,如果结束角度是360度的话则就会画一个完整的圆。
画圆通过ImageDrawellipse(xy, fill=None, outline=None, width=1) 方法,该方法可以画出一个给定范围的圆
xy--> 定义边界框的两个点,传入的格式是[ (x0, y0), (x1, y1)] 或者 [x0, y0, x1, y1] ,其中 x1>=x0,y1>=y0
outline--> 轮廓的颜色
fill ---> 填充颜色
width--> 轮廓的宽度
ImageDrawchord(xy, start, end, fill=None, outline=None, width=1) 方法用来画半圆,跟arc()方法不同的是它会用直线将起始点和结束点连接起来
xy--> 定义边界框的两个点,传入的格式是[ (x0, y0), (x1, y1)] 或者 [x0, y0, x1, y1] ,其中 x1>=x0,y1>=y0
outline--> 轮廓的颜色
fill ---> 填充颜色
width--> 轮廓的宽度
ImageDrawpieslice(xy, start, end, fill=None, outline=None, width=1)
类似于arc()方法,不过他会在端点和圆点之间画直线
xy--> 定义边界框的两个点,传入的格式是[ (x0, y0), (x1, y1)] 或者 [x0, y0, x1, y1] ,其中 x1>=x0,y1>=y0
start --> 起始角度,以度为单位,从3点钟开始顺时针增加
end--> 结束角度,以度为单位
fill--> 弧线的颜色
width-->弧线的宽度
ImageDrawrectangle(xy, fill=None, outline=None, width=1)
xy--> 在两个坐标点之间画一条直线,坐标点的传入方式是[(x, y), (x, y), ]或者[x, y, x, y, ]
outline--> 轮廓的颜色
fill--> 填充的颜色
width--> 轮廓线的宽度
ImageDrawrounded_rectangle(xy, radius=0, fill=None, outline=None, width=1) 该方法可以画一个圆角矩形
xy--> 在两个坐标点之间画一条直线,坐标点的传入方式是[(x, y), (x, y), ]或者[x, y, x, y, ]
radius--> 角的半径
outline--> 轮廓的颜色
fill--> 填充的颜色
width--> 轮廓线的宽度
这里有个问题,就是画好的图形如何从Image中扣出来呢?
ImageEnhance模块主要是用于设置的颜色对比度亮度锐度等啥的,增强图像。
原始图像
ImageFilter模块主要用于对图像进行过滤,增强边缘,模糊处理,该模块的使用方式是 imfilter(ImageFilter) 。
其中ImageFilter按照需求传入指定的过滤值。
下面一个个试下效果
4边缘增强
ImageGrab模块主要用于对屏幕进行截图,通过grab方法进行截取,如果不传入任何参数则表示全屏幕截图,否则是截取指定区域的图像。其中box格式是:(x1,x2,y1,y2)
利用Pillow库可以轻易的对图像增加水印
首先,用PIL的Image函数读取
接着,新建一张图(尺寸和原图一样)
然后,在新建的图象上用PIL的ImageDraw把字给画上去,字的颜色从原图处获取。
原图
添加文字后的效果图
本文详细介绍了Pillow库的使用,希望对读者朋友们有所帮助。
Pillow官方文档
需要获取源码的小伙伴可以关注下方的公众号,回复python
这个不能一概而论的,据说python目前高达27万+个库,看你学习的方向必学模块也有不同,简单列举:
1、网络通用方面:
urllib -网络库
requests -网络库
pycurl – 网络库
>
RoboBrowser – 浏览网页
MechanicalSoup -一个与网站自动交互Python库
socket – 底层网络接口
2、爬虫方面:
grab – 爬虫框架
scrapy – 网络爬虫框架,不支持Python3
pyspider –爬虫系统。
cola – 爬虫框架
portia – 可视化爬虫
3、HTML/XML解析方面:
lxml – 高效HTML/ XML处理库
cssselect – 解析DOM树和CSS选择器。
pyquery – 解析DOM树和jQuery选择器。
html5lib – 根据WHATWG规范生成HTML/ XML文档的DOM
feedparser – 解析RSS/ATOM feeds。
MarkupSafe – 为XML/HTML/XHTML提供了安全转义的字符串。
xhtml2pdf – 将HTML/CSS转换为PDF。
untangle – XML文件转Python对象
4、文件处理方面:
xpinyin – 将中国汉字转为拼音
tablib – 数据导出为XLS、CSV、JSON、等格式的模块
textract – 从文件中提取文本
messytables – 解析表格数据
rows – 常用数据接口
Office
python-docx – 读取,查询和修改docx文件
xlwt / xlrd – 从Excel文件读取写入数据和格式信息
Markdown
Python-Markdown – 一个用Python实现的John Gruber的Markdown。
以上就是关于Python程序抓图 怎么用程序实现截图全部的内容,包括:Python程序抓图 怎么用程序实现截图、Python什么爬虫库好用、python的爬虫框架有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)