




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
能力要求能通過學習本章知識,掌握使用正則表達式解析網頁的方法。能通過學習本章知識,掌握使用正則表達式解析網頁的方法。能通過學習本章知識,掌握lxml工具解析網頁的方法解析采集到的網頁解析采集到的網頁HTML網頁數據的解析、提取是Python網絡數據采集開發中的非常關鍵的步驟。HTML網頁的解析、提取有很多方法,本章將從3個方面進行講解。前面已經了解了網頁的結構并且采集得到了網頁的數據和信息,下面將要介紹3種解析網頁數據的方法。首先是正則表達式,然后是流行的BeautifulSoup模塊,最后是強大的lxml模塊。1使用正則表達式解析2使用BeautifulSoup解析3使用lxml解析目錄4解析方法的優缺點對比3.1使用正則表達式解析簡單地說,正則表達式是一種可以用于模式匹配和替換的強大工具。在幾乎所有的基于UNIX/Linux系統的軟件工具中都可以找到正則表達式的痕跡,如Perl或PHP腳本語言。此外,JavaScript這種腳本語言也提供了對正則表達式的支持。現在正則表達式已經成為了一個通用的工具,被各類技術人員所廣泛使用。正則表達式是一個很強大的字符串處理工具,幾乎任何關于字符串的操作都可以使用正則表達式來完成。作為一個數據采集工作者,每天和字符串打交道,正則表達式更是不可或缺的技能,正則表達式在不同開發語言中的使用方式可能不一樣,不過只要學會了任意一門語言的正則表達式用法,其他語言中大部分也只是換了個函數的名稱而已,本質都是一樣的。模式描述模式描述.匹配任意字符(不包括換行符)\A匹配字符串開始位置,忽略多行模式^匹配開始位置,多行模式下匹配每一行的開始\Z匹配字符串結束位置,忽略多行模式$匹配結束位置,多行模式下匹配每一行的結束\b匹配位于單詞開始或結束位置的空字符串*匹配前一個元字符0到多次\B匹配不位于單詞開始或結束位置的空字符串+匹配前一個元字符1到多次\d匹配一個數字,相當于[0-9]?匹配前一個元字符0到1次\D匹配非數字,相當于[^0-9]{m,n}匹配前一個元字符m到n次\s匹配任意空白字符,相當于[\t\n\r\f\v]Python與正則表達式正則表達式是一個特殊的字符序列,它能幫助你方便地檢查一個字符串是否與某種模式匹配。Python自1.5版本就增加了re模塊,提供Perl風格的正則表達式模式。re模塊使Python語言擁有全部的正則表達式功能。compile函數根據一個模式字符串和可選的標志參數生成一個正則表達式對象。該對象擁有一系列方法用于正則表達式匹配和替換。Re模塊也提供了與這些方法功能完全一致的函數。這些函數使用一個模式字符串作為它們的第一個參數。下面主要介紹Python中常用的正則表達式處理函數。1.re.match函數2.re.search函數re.search函數用于掃描整個字符串并返回第一個成功的匹配。3.re.match與re.search的區別re.match只匹配字符串的開始位置,如果字符串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字符串,直到找到一個匹配。1使用正則表達式解析2使用BeautifulSoup解析3使用lxml解析目錄4解析方法的優缺點對比3.2使用BeautifulSoup解析什么是網頁解析器?簡單地說,網頁解析器就是用來解析HTML網頁的工具,準確地說:它是一個HTML網頁信息提取工具,就是從HTML網頁中解析提取出“需要的有價值的數據”或者“新的URL鏈接”的工具。Python有以下幾種網頁解析器:正則表達式、html.parser、BeautifulSoup、lxml。常見的Python網頁解析工具有:re正則匹配、Python自帶的html.parser模塊、第三方庫BeautifulSoup(重點學習)以及lxm庫。BeautifulSoup第三方庫BeautifulSoup是一個可以從HTML或XML文件中提取數據的Python庫。它能夠通過你喜歡的轉換器實現慣用文檔導航、查找、修改文檔等操作。在基于Python的數據采集開發中,主要用到的是BeautifulSoup的查找提取功能,修改文檔方式很少用到。可以說,BeautifulSoup是一個非常流行的Python模塊。簡單來說,BeautifulSoup是Python的一個庫,最主要的功能是從網頁抓取數據。BeautifulSoup提供一些簡單的、Python式的函數用來處理導航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數據,因為簡單,所以不需要多少代碼就可以寫出一個完整的應用程序。BeautifulSoup自動將輸入文檔轉換為Unicode編碼,輸出文檔轉換為utf-8編碼。不需要考慮編碼方式,除非文檔沒有指定一個編碼方式。這時,BeautifulSoup就不能自動識別編碼方式了。然后,僅僅需要說明一下原始編碼方式就可以了。BeautifulSoup已成為和lxml、html6lib一樣出色的Python解析器,為用戶靈活地提供不同的解析策略或強勁的速度。安裝beautifulsoup4接下來介紹BeautifulSoup在Python網絡數據采集開發中的使用。該模塊可以解析網頁,并提供定位內容的便捷接口。如果還沒有安裝該模塊,可以使用下面的命令安裝其最新版本。pipinstallbeautifulsoup4BeautifulSoup發布時打包成Python2版本的代碼,在Python3環境下安裝時,會自動轉換成Python3的代碼,如果沒有一個安裝的過程,那么代碼就不會被轉換。如果代碼拋出了ImportError的異常“NomodulenamedHTMLParser”,則表明你在Python3版本中執行Python2版本的代碼。如果代碼拋出了ImportError的異常“Nomodulenamedhtml.parser”,則表明你在Python2版本中執行Python3版本的代碼。如果遇到上述兩種情況,最好的解決方法是重新安裝beautifulsoup4。如果在ROOT_TAG_NAME=u'[document]'代碼處遇到SyntaxError"Invalidsyntax"錯誤,需要將把bs4的Python代碼版本從Python2轉換到Python3,然后重新安裝bs4。python3setup.pyinstallBeautifulSoup語法3.BeautifulSoup語法使用BeautifulSoup的一般流程有3個步驟。(1)創建BeautifulSoup對象。(2)使用BeautifulSoup對象的操作方法find_all與find進行解讀搜索,示例如下。>>>>soup.find_all('a')>>>>soup.find('a')1使用正則表達式解析2使用BeautifulSoup解析3使用lxml解析目錄4解析方法的優缺點對比3.3使用lxml解析前面介紹了BeautifulSoup的用法,這個已經是非常強大的庫了,不過還有一些比較流行的解析庫,例如lxml,使用的是Xpath語法,同樣是效率比較高的解析方法。如果大家對BeautifulSoup使用不太習慣的話,可以嘗試下lxml。安裝lxmlPython標準庫中自帶了xml模塊,但是性能不夠好,而且缺乏一些人性化的API。相比之下,第三方庫lxml是用Cython實現的,而且增加了很多實用的功能,可謂網絡數據采集處理網頁數據的一件利器。lxml大部分功能都存在于lxml.etree中。pipinstalllxml也可以使用easy_install工具下載lxml模塊。Python3.x之后就集成了pip、easy_install等工具可以用來直接下載Python所需的模塊。但如果使用的是Python3.4.3,當使用pip下載lxml,則會出現各種依賴問題。1使用正則表達式解析2使用BeautifulSoup解析3使用lxml解析目錄4解析方法的優缺點對比3.4解析方法的優缺點對比推薦使用lxml作為解析器,因為效率更高,不過在Python2.7.3之前的版本和Python3中3.2.2之前的版本,必須安裝lxml或html5lib,因為那些Python版本的標準庫中內置的HTML解析方法不夠穩定。解析器使用方法優勢劣勢Python標準庫BeautifulSoup(markup,"html.parser")Python的內置標準庫;執行速度適中;文檔容錯能力強Python2.7.3or3.2.2)前的版本中文檔容錯能力差lxmlHTML解析器BeautifulSoup(markup,"lxml")速度快;文檔容錯能力強需要安裝C語言庫lxmlXML解析器BeautifulSoup(markup,["lxml","xml"])BeautifulSoup(markup,"xml")速度快;唯一支持XML的解析器需要安裝C語言庫html5libBeautifulSoup(markup,"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 3YD-9無線電力負荷監控系統項目安全評估報告
- 湖北省鄂州市鄂州高中2025年高三第三次四校聯考語文試題試卷含解析
- 湖北省宜昌市高中名校2025屆高三下學期期終調研測試語文試題試卷含解析
- 垃圾清運培訓內容
- 2025【視障人士康復按摩師勞動合同】視障人士康復按摩樣本
- 2025廣告設計的委托合同
- 知識產權公司
- 家訪與溝通工作方案計劃
- 班級環保活動的具體安排計劃
- 塑造團隊領導力的技巧計劃
- 長沙2025年湖南長沙縣招聘機關事業單位工作人員26人筆試歷年參考題庫附帶答案詳解
- 微信生態運營全景解讀
- HACCP計劃書蠟基類化妝品
- 曼昆微觀經濟學經濟學十大原理英文版.ppt
- -三自由度機械手設計
- 循環系統總論
- 第二章空氣動力學
- 會計師事務所11內部分配和考核晉升制度
- 淺談如何搞好班組安全管理工作
- 第七章_材料顯微斷口分析
- 創傷護四項技術
評論
0/150
提交評論