python识别屏幕内容_python之屏幕抓取
Tidy 和 HTML 解析
Beautiful Soup
屏幕抓取:是通过程序下载⽹页并从中提取信息的过程。
python怎么读取桌面上的文件简单来见:下载数据并对其进⾏分析
思路:可使⽤urllib来获取⽹页的HTML代码,再使⽤正则表达式从中提取信息。
通过查看该⽹站的源代码,可发现类似于下⾯的链接中到名称和URL:
如下:简单的屏幕抓取程序
quest importurlopenimportre
p= repile('')
text= urlopen('/jobs').read().decode()for url,name inp.findall(text):print('{}({})'.format(name,url))
以上代码需要跟进的地⽅:
1.正则表达式⼀点都不容易理解。如果HTML代码和查询更复杂,那正则表达式就难以理解和维护
2.⽆法处理独特的HTML内容;⽐如CDATA部分和实符字体(如&)
正则表达式依赖于HTML代码的细节,并不是抽象的结构;意味着只要⽹页的结构发⽣⼀点点变化,那这个程序可能就⽆效了。
针对基于正则表达式的⽅法存在的问题,可有两种解决⽅案:
(1)结合使⽤程序Tidy(⼀个python库)和XHTML解析
(2) 使⽤专为屏幕抓取⽽设计的Beautiful Soup
Tidy 和XHTML解析
Tidy是⽤于对格式不正确且不严谨的HTML进⾏修复的⼯具,它⾮常聪明,能够修复很多常见的错误,从⽽完成⼤量你不愿意做的⼯作。它还提供了极⼤的配置空间,让你能够开 / 关各种校正。
当然,Tidy并不能修复HTML⽂件存在的所有问题,但确实能够确保⽂件是格式良好的(即所有元素都
嵌套正确),这让解析⼯作容易很多。
获取Tidy
有多个⽤于python的Tidy库包装器,⾄于哪个最新并⾮固定不变的,使⽤pip来出可供使⽤的包装器:
$pip search tidy
可选择安装PyTidyLib:
$ pip install pytidylib
并⾮⼀定要安装Tidy库包装器。如果你是⽤的是unix或者linux系统,很可能已经默认安装了命令⾏版Tidy。此外,不管使⽤的是什么系统,都可以从Tidy⽹站上获取可执⾏的⼆进制版本,有了⼆进制版本之后,就可以使⽤模块subprocess(或其他包含open函数的模块)来运⾏Tidy程序了。
如果python不到tidy,可能需要提供这个可执⾏⽂件的完整路径。
XHTML 和 HTML的主要区别在于,XHTML⾮常严格,要求显式地结束所有的元素;
因此,在HTML可通过(使⽤标签
)开始另⼀个段落来结束当前段落,但在XHTML中,必须先(使⽤标签
)显式地结束当前段落。这让XHTML解析起来容易得多,因为你能清除地直到何时进⼊或者离开各种元素,
XHTML的另⼀个优点:它是⼀种XML⽅⾔,可⾷⽤各种出⾊的⼯具(XPath)来处理
要求对Tidy⽣成的格式良好的XHTML进⾏解析,⼀种⾮常简单的⽅式就是使⽤标准库模块html.parser中的HTMLParser类待补充~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。