python识别屏幕内容_python之屏幕抓取
Tidy 和 HTML 解析
Beautiful Soup
屏幕抓取:是通過程序下載網頁并從中提取信息的過程。
簡單來見:下載數據并對其進行分析
思路:可使用urllib來獲取網頁的HTML代碼,再使用正則表達式從中提取信息。
例如:假設要從python Job Board(http://python.org/jobs)提取招聘單位的名稱和網站。
通過查看該網站的源代碼,可發現類似于下面的鏈接中找到名稱和URL:
Python Engineer
如下:簡單的屏幕抓取程序
from urllib.request importurlopenimportre
p= re.compile('(.*?)')
text= urlopen('http://python.org/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類
待補充~
總結
以上是生活随笔為你收集整理的python识别屏幕内容_python之屏幕抓取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 丛书【数据库面试笔试宝典】已在京东、淘宝
- 下一篇: MediaRecorder MPEG4