




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Python爬蟲大數據采集與挖掘(6)
--Web信息提取與Python實現《Python爬蟲大數據采集與挖掘》第二版.微課視頻版(清華大學出版社,2025)教材《Python爬蟲大數據采集與挖掘》及配套公眾號
(當當、京東可購書)提綱Web信息提取任務及要求Web頁面內容提取的思路基于HTML結構的內容提取方法基于統計的Web內容抽取方法基于JSON的web信息提取Web信息存儲Web信息提取包含Web頁面中的超鏈接提取和Web內容提取兩大部分,都是網絡爬蟲技術的重要組成部分。前者是找出頁面中的所有超鏈接或符號一定規則的超鏈接,作為爬蟲的爬行任務,在技術實現上比較簡單。后者是從Web頁面中提取信息內容,一般是指頁面中有意義的內容,相應的提取技術實現上比較復雜。WEB頁面中包含有豐富的信息內容,對于互聯網大數據分析有用的信息可能是某個新聞報道頁面中的正文部分,也可能是某網絡論壇中的帖子信息、人際關系信息等。WEB頁面版式各式各樣,但可以歸結為以下若干種。新聞報道型頁面列表型頁面評論型頁面提綱Web信息提取任務及要求Web頁面內容提取的思路基于HTML結構的內容提取方法基于統計的Web內容抽取方法基于JSON的web信息提取Web信息存儲Web頁面它具有一定的結構,即由HTML標簽構成的樹型結構。在進行內容提取時充分利用這種結構,再結合一定的搜索策略,可以快速獲得所需要的內容??紤]到Web頁面經常改版,這種基于結構和搜索策略的方法具有比較高的適應能力,使得程序容易維護。目前有多種HTML解析器的開源框架,大都集成了DOM樹的解析,并提供了靈活的方式來對樹進行遍歷和搜索。與簡單的標簽Tag匹配不同,這種方法可以實現基于標簽在樹中的特征來定位要抽取的信息內容,從而可以方便完成頁面內容的提取。DOM樹HTML文件中的標簽構成的樹是一種DOM樹,DOM是DocumentObjectModel的簡稱,即文檔對象模型,提供了一種面向對象描述文檔的方式。BeautifulSoup等各種HTML解析器對DOM標準中的屬性和方法進行了實現和封裝,為程序開發人員提供Java、Python等不同語言的接口調用,使得Web信息內容的提取變得更加方便。但是,如果自己要從底層編寫Web信息提取程序,就需要根據HTMLDOM定義的這些標準來實現。提取方法在進行WEB頁面信息提取時,一般有兩種場景。一種是,針對特定的網站,可以假定頁面的標簽結構特征是已知的。這種場景一般是,爬蟲抓取的頁面數量不是很多,而且頁面不常改版。另一種是,不針對特定網站,頁面的標簽結構是無法實現確定的。對于網絡爬蟲應用來說,這種場景一般有兩種情況。一是,爬蟲抓取大量不同Web頁面而無法逐個分析其標簽結構;二是,Web頁面經常改版,以至于標簽結構需要經常修改。Web信息提取的三種基本思路是:1.基于字符串匹配的Web信息提取方法2.基于HTML結構的Web信息提取方法3.基于統計的Web信息提取方法基于結構的方法其基本思路描述如下:(1)通過HTML解析器將Web文檔解析成DOM樹;(2)確定要提取的正文在DOM樹中的哪個節點下,并且節點名稱和屬性具有惟一性;(3)通過各種方法定位到該節點,將節點中所包含的內容提取出來。其中,第二個步驟是通過人工方式分析頁面結構,例如上節的HTML例子中,標題字符串是在title節點下,而title在整個HTML文檔中具有惟一性,因此可以作為提取的依據。在第三個步驟中,如果無法找到具有惟一性的節點,則需要采用各種復雜的搜索策略。提綱Web信息提取任務及要求Web頁面內容提取的思路基于HTML結構的內容提取方法基于統計的Web內容抽取方法基于JSON的web信息提取Web信息存儲在Python中已經有很多種開源庫可以用于實現基于HTML結構的信息提取。這些開源庫完成了DOM樹的構建,并給開發人員提供了豐富的搜索策略,可以靈活方便地實現Web信息提取。這些開源庫主要有html.parser、lxml、html5lib、BeautifulSoup以及PyQuery等。開源庫優點缺點html.parserPython自帶的解釋器,執行速度適中、文檔容錯能力強對于某些python版本的兼容性不好lxml文檔容錯能力較好,唯一支持HTML和XML的解析器。大部分源碼基于C語言的實現,因此速度快。需要安裝C語言庫html5lib兼容性好、容錯性好、以瀏覽器的方式解析文檔、生成HTML5格式的文檔、不依賴外部擴展速度慢、需要額外的python支持BeautifulSoup可以選擇最合適的解析器來解析HTML文檔,使用方便速度偏慢PyQuery比較簡單,而且其支持的css選擇器的功能比較強大。pyQuery和jQuery的語法很像,易上手
不同解釋器的聯系html.parser是Python中的自帶的標準類,可以用來對HTML/XHTML編碼的文本文件進行解析。該類的定義如下:classhtml.parser.HTMLParser(*,convert_charrefs=True)其中,參數convert_charrefs表示是否將所有的字符(除了script/style元素之外)引用自動轉化為Unicode形式,Python3.5以后的默認值是True。HTMLParser提供給開發人員的是一種事件驅動的模式,對于給定的HTML文本輸入,HTMLParser提供了一系列的事件作為編程接口,這些事件就是前面定義的各種方法(method)。事件發生的順序按如下次序進行:
handle_starttag->handle_data->handle_comment->handle_endtag
實例見教材lxmllxml包(Package)為開發人員提供了很強的功能來處理HTML和XML文檔,也是Python語言中最容易使用的庫之一。lxml是libxml2和libxslt兩個C語言庫的Python化綁定,它的獨特之處在于兼顧了這些庫的速度和功能完整性,同時還具有PythonAPI的調用。lxml中包含了以下一些重要的模塊(modules):lxml.etree:該模塊實現了文檔的擴展ElementTreeAPI。lxml.html:處理HTML的工具集。lxml.builder:生成XML文檔的方法。lxml.cssselect:基于XPath的CSS選擇器。在使用lxml進行Web信息提取時,最主要的問題是如何進行節點的定位。lxml提供了兩種方式,一是xpath,二是樹的遍歷函數。在程序設計時可以根據實際情況單獨使用或兩者一起使用。lxml庫中包含的主要模塊有:etree、html、cssselect等,在程序設計上主要的是三個步驟。表達式描述nodename表示某個具體的節點/根節點。//所有節點,而不考慮它們的位置。.當前節點..當前節點的父節點xpathHtml5libhtml5lib是一個Ruby和Python用來解析HTML文檔的類庫,支持HTML5以及最大程度兼容桌面瀏覽器。html5lib包中包含了constants、html5parser、serializer三個模塊以及filters、treebuilders、treewalkers和treeadapters四個子包(Subpackages)。html5parser中定義的HTMLParser類對于解析HTML而言是比較重要的,它的聲明如下是:html5lib.html5parser.HTMLParser(tree=None,strict=False,namespaceHTMLElements=True,debug=False)程序設計方法(1)直接通過html5lib執行parse方法,該方法返回一顆解析好的etree,然后就可以etree的xpath方法來指定要提取的內容的路徑,從而獲取信息。(2)如果要處理的頁面比較多,使用第一種方法需要重復些parse方法的一些同樣參數,為此,可以先使用html5lib.HTMLParser構造一個解析器,然后執行該解析器的parse方法去處理不同頁面。(3)有時候,要提取的信息難于用xpath的路徑來表達,例如要提取Web頁面中所有超鏈接時,針對每個超鏈接寫一個路徑固然可以,但是編程效率太低。這種情況下可以利用etree的模式匹配能力,運用findall等方法從HTML文檔中找出所有符合條件的標簽。(4)對于html5lib來說,其最大的優勢在于具備處理不完整、不規范、有錯誤標簽的HTML文檔,能夠進行自動修復,因此在一些場合下使用html5lib進行Web頁面信息提取具有一定優勢。BeautifulSoupBeautifulSoup是一個可以從HTML或XML文件中提取數據的Python庫,目前最新版本為BeautifulSoup4.7.1,簡稱為bs4,即BeautifulSoup4。bs4是一個包(package),其中包含了BeautifulSoup、EntitySubstitution、builder、AnnouncingParser等類。這些類中,BeautifulSoup使用得最多,因此很多人就認為BeautifulSoup和bs4是一樣,但其實不然。BeautifulSoup將HTML文檔轉換成一個樹形結構,盡管結構上可能比較復雜,但是從程序設計角度看,只要處理四種類型的Python對象:Tag、NavigableString、BeautifulSoup和Comment。建議重點掌握CSS選擇器這種方式使用select方法,允許通過標簽名、類名、id名、以及組合查找、子標簽查找。在查找時,最重要的模式是由標簽名、類名、id和子標簽組成。標簽名不加修飾,類名前加點,id名前加#,子標簽通過>或空格定義。相比于xpath,CSS也提供了很簡潔的選擇方式,在Web信息提取中廣泛應用。一些例子如下:soup.select('title')#通過標簽名soup.select('.sister')#通過類名查找soup.select('#link1')#通過id名查找soup.select('p#link1')#組合查找soup.select("head>title")#直接子標簽查找(>前后加空格)soup.select('.list>#link1')#class名稱為list的標簽節點下id名稱為link1的子節點select方法返回的結果是list類型,可以通過下標和text屬性來得到內容,例如:soup.select('title')[0].text這個語句獲得頁面的title內容。特別地,如果類名本身帶有空格,則應該用點代替其中的空格,例如:對于<divclass="zwliclearfix">的選擇,應該使用soup.select('div.zwli.clearfix')PyQueryPyQuery是一個主要的python庫,它具有類似于JavaScript框架jQuery的功能。PyQuery使用lxml解析器在xml和html文檔上進行操作,并提供了和jQuery類似的語法來解析HTML文檔,支持CSS選擇器,使用也非常方便。官方文檔在/pyquery/可查閱。實例見教材提綱Web信息提取任務及要求Web頁面內容提取的思路基于HTML結構的內容提取方法基于統計的Web內容抽取方法基于JSON的web信息提取Web信息存儲網站也會經常升級改版,由此導致寫好的程度針對新版失效了。提取程序就需要有一定的智能性,能夠自動識別某個WEB頁面上的正文位置,其前提是在沒有人工參與的情況下。其基本步驟如下:構建HTML文檔對應的DOM樹;基于某種特征來構建基于DOM樹的信息提取規則;按照規則,從HTML中提取信息。規則的制定或生成方法有以下兩種。第一種,是通過啟發式方法。一般通過人工對HTML頁面進行觀察和總結,以DOM樹所確定的基本組成單位為規則中的特征,人工估計其對應的特征值,從而形成啟發式規則。第二種,機器學習方法。這種方法通過人工選擇大量的HTML頁面,并對頁面中的正文區域進行標注,再由程序計算正文節點中各種特征對應的特征值,以及其他類型節點對應的特征值。從而將正文節點的判斷轉換成為一個分類問題,即根據某些特征及特征值,判斷節點是否為正文。這樣的問題顯然合適于機器學習方法來解決。提綱Web信息提取任務及要求Web頁面內容提取的思路基于HTML結構的內容提取方法基于統計的Web內容抽取方法基于JSON的web信息提取Web信息存儲許多商品評論是以JSON形式從服務器返回給客戶端的,例如,京東的商品評論是JSON格式的字符串,如下:這種情況下,就不是解析HTML了,而是解析JSON以獲得結構化數據。JSON的全稱是JavaScriptObjectNotati
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級北師大數學下學期期中復習家庭練習單
- 北師大版四年級語文下學期月考知識點針對練習考試
- 2025-2030化纖行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030刀式皮膚治療儀行業市場現狀供需分析及重點企業投資評估規劃分析研究報告
- 2025-2030冷軋不銹鋼產業市場深度調研及發展趨勢與投資研究報告
- 部編版四年級數學下學期期中復習加深練習題
- 2025-2030冰晶石行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030養生壺行業并購重組機會及投融資戰略研究咨詢報告
- 2025-2030全脂奶粉行業市場現狀供需分析及重點企業投資評估規劃分析研究報告
- 2025-2030全球及中國輪胎安裝傳感器行業市場現狀供需分析及投資評估規劃分析研究報告
- 二年級語文下冊 語文園地四 同步練習(含答案)
- 全套課件-《Visual-FoxPro-9.0項目開發案例教程》-李政
- 高效團隊:寧德時代的部門職責與協作模式
- 2024年鐵路貨運承包經營協議3篇
- 水利主要工序施工方案,控制及工程項目實施的重點,難點和解決方案
- 人教版小學數學基礎知識
- RBA VAP 71 操作手冊 中文版 7
- 2025年中智公司招聘筆試參考題庫含答案解析
- 機械設計基礎 軸系結構改錯答案
- 電氣工作票技術規范(發電、變電部分)2024整合版
- 大學校園綠化與可持續發展規劃
評論
0/150
提交評論