Python程序抓图 怎么用程序实现截图

Python程序抓图 怎么用程序实现截图,第1张

由于在我的一个程序中想要添加一个截图功能,今天看一下利用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文件读取写入数据和格式信息

PDF

Markdown

Python-Markdown – 一个用Python实现的John Gruber的Markdown。

以上就是关于Python程序抓图 怎么用程序实现截图全部的内容,包括:Python程序抓图 怎么用程序实现截图、Python什么爬虫库好用、python的爬虫框架有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9751844.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存