Python爬蟲大數(shù)據(jù)采集與挖掘-微課視頻版-課件 第二版-6 Web信息提取與Python實現(xiàn)_第1頁
Python爬蟲大數(shù)據(jù)采集與挖掘-微課視頻版-課件 第二版-6 Web信息提取與Python實現(xiàn)_第2頁
Python爬蟲大數(shù)據(jù)采集與挖掘-微課視頻版-課件 第二版-6 Web信息提取與Python實現(xiàn)_第3頁
Python爬蟲大數(shù)據(jù)采集與挖掘-微課視頻版-課件 第二版-6 Web信息提取與Python實現(xiàn)_第4頁
Python爬蟲大數(shù)據(jù)采集與挖掘-微課視頻版-課件 第二版-6 Web信息提取與Python實現(xiàn)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

Python爬蟲大數(shù)據(jù)采集與挖掘(6)

--Web信息提取與Python實現(xiàn)《Python爬蟲大數(shù)據(jù)采集與挖掘》第二版.微課視頻版(清華大學出版社,2025)教材《Python爬蟲大數(shù)據(jù)采集與挖掘》及配套公眾號

(當當、京東可購書)提綱Web信息提取任務及要求Web頁面內(nèi)容提取的思路基于HTML結構的內(nèi)容提取方法基于統(tǒng)計的Web內(nèi)容抽取方法基于JSON的web信息提取Web信息存儲Web信息提取包含Web頁面中的超鏈接提取和Web內(nèi)容提取兩大部分,都是網(wǎng)絡爬蟲技術的重要組成部分。前者是找出頁面中的所有超鏈接或符號一定規(guī)則的超鏈接,作為爬蟲的爬行任務,在技術實現(xiàn)上比較簡單。后者是從Web頁面中提取信息內(nèi)容,一般是指頁面中有意義的內(nèi)容,相應的提取技術實現(xiàn)上比較復雜。WEB頁面中包含有豐富的信息內(nèi)容,對于互聯(lián)網(wǎng)大數(shù)據(jù)分析有用的信息可能是某個新聞報道頁面中的正文部分,也可能是某網(wǎng)絡論壇中的帖子信息、人際關系信息等。WEB頁面版式各式各樣,但可以歸結為以下若干種。新聞報道型頁面列表型頁面評論型頁面提綱Web信息提取任務及要求Web頁面內(nèi)容提取的思路基于HTML結構的內(nèi)容提取方法基于統(tǒng)計的Web內(nèi)容抽取方法基于JSON的web信息提取Web信息存儲Web頁面它具有一定的結構,即由HTML標簽構成的樹型結構。在進行內(nèi)容提取時充分利用這種結構,再結合一定的搜索策略,可以快速獲得所需要的內(nèi)容。考慮到Web頁面經(jīng)常改版,這種基于結構和搜索策略的方法具有比較高的適應能力,使得程序容易維護。目前有多種HTML解析器的開源框架,大都集成了DOM樹的解析,并提供了靈活的方式來對樹進行遍歷和搜索。與簡單的標簽Tag匹配不同,這種方法可以實現(xiàn)基于標簽在樹中的特征來定位要抽取的信息內(nèi)容,從而可以方便完成頁面內(nèi)容的提取。DOM樹HTML文件中的標簽構成的樹是一種DOM樹,DOM是DocumentObjectModel的簡稱,即文檔對象模型,提供了一種面向對象描述文檔的方式。BeautifulSoup等各種HTML解析器對DOM標準中的屬性和方法進行了實現(xiàn)和封裝,為程序開發(fā)人員提供Java、Python等不同語言的接口調用,使得Web信息內(nèi)容的提取變得更加方便。但是,如果自己要從底層編寫Web信息提取程序,就需要根據(jù)HTMLDOM定義的這些標準來實現(xiàn)。提取方法在進行WEB頁面信息提取時,一般有兩種場景。一種是,針對特定的網(wǎng)站,可以假定頁面的標簽結構特征是已知的。這種場景一般是,爬蟲抓取的頁面數(shù)量不是很多,而且頁面不常改版。另一種是,不針對特定網(wǎng)站,頁面的標簽結構是無法實現(xiàn)確定的。對于網(wǎng)絡爬蟲應用來說,這種場景一般有兩種情況。一是,爬蟲抓取大量不同Web頁面而無法逐個分析其標簽結構;二是,Web頁面經(jīng)常改版,以至于標簽結構需要經(jīng)常修改。Web信息提取的三種基本思路是:1.基于字符串匹配的Web信息提取方法2.基于HTML結構的Web信息提取方法3.基于統(tǒng)計的Web信息提取方法基于結構的方法其基本思路描述如下:(1)通過HTML解析器將Web文檔解析成DOM樹;(2)確定要提取的正文在DOM樹中的哪個節(jié)點下,并且節(jié)點名稱和屬性具有惟一性;(3)通過各種方法定位到該節(jié)點,將節(jié)點中所包含的內(nèi)容提取出來。其中,第二個步驟是通過人工方式分析頁面結構,例如上節(jié)的HTML例子中,標題字符串是在title節(jié)點下,而title在整個HTML文檔中具有惟一性,因此可以作為提取的依據(jù)。在第三個步驟中,如果無法找到具有惟一性的節(jié)點,則需要采用各種復雜的搜索策略。提綱Web信息提取任務及要求Web頁面內(nèi)容提取的思路基于HTML結構的內(nèi)容提取方法基于統(tǒng)計的Web內(nèi)容抽取方法基于JSON的web信息提取Web信息存儲在Python中已經(jīng)有很多種開源庫可以用于實現(xiàn)基于HTML結構的信息提取。這些開源庫完成了DOM樹的構建,并給開發(fā)人員提供了豐富的搜索策略,可以靈活方便地實現(xiàn)Web信息提取。這些開源庫主要有html.parser、lxml、html5lib、BeautifulSoup以及PyQuery等。開源庫優(yōu)點缺點html.parserPython自帶的解釋器,執(zhí)行速度適中、文檔容錯能力強對于某些python版本的兼容性不好lxml文檔容錯能力較好,唯一支持HTML和XML的解析器。大部分源碼基于C語言的實現(xiàn),因此速度快。需要安裝C語言庫html5lib兼容性好、容錯性好、以瀏覽器的方式解析文檔、生成HTML5格式的文檔、不依賴外部擴展速度慢、需要額外的python支持BeautifulSoup可以選擇最合適的解析器來解析HTML文檔,使用方便速度偏慢PyQuery比較簡單,而且其支持的css選擇器的功能比較強大。pyQuery和jQuery的語法很像,易上手

不同解釋器的聯(lián)系html.parser是Python中的自帶的標準類,可以用來對HTML/XHTML編碼的文本文件進行解析。該類的定義如下:classhtml.parser.HTMLParser(*,convert_charrefs=True)其中,參數(shù)convert_charrefs表示是否將所有的字符(除了script/style元素之外)引用自動轉化為Unicode形式,Python3.5以后的默認值是True。HTMLParser提供給開發(fā)人員的是一種事件驅動的模式,對于給定的HTML文本輸入,HTMLParser提供了一系列的事件作為編程接口,這些事件就是前面定義的各種方法(method)。事件發(fā)生的順序按如下次序進行:

handle_starttag->handle_data->handle_comment->handle_endtag

實例見教材lxmllxml包(Package)為開發(fā)人員提供了很強的功能來處理HTML和XML文檔,也是Python語言中最容易使用的庫之一。lxml是libxml2和libxslt兩個C語言庫的Python化綁定,它的獨特之處在于兼顧了這些庫的速度和功能完整性,同時還具有PythonAPI的調用。lxml中包含了以下一些重要的模塊(modules):lxml.etree:該模塊實現(xiàn)了文檔的擴展ElementTreeAPI。lxml.html:處理HTML的工具集。lxml.builder:生成XML文檔的方法。lxml.cssselect:基于XPath的CSS選擇器。在使用lxml進行Web信息提取時,最主要的問題是如何進行節(jié)點的定位。lxml提供了兩種方式,一是xpath,二是樹的遍歷函數(shù)。在程序設計時可以根據(jù)實際情況單獨使用或兩者一起使用。lxml庫中包含的主要模塊有:etree、html、cssselect等,在程序設計上主要的是三個步驟。表達式描述nodename表示某個具體的節(jié)點/根節(jié)點。//所有節(jié)點,而不考慮它們的位置。.當前節(jié)點..當前節(jié)點的父節(jié)點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執(zhí)行parse方法,該方法返回一顆解析好的etree,然后就可以etree的xpath方法來指定要提取的內(nèi)容的路徑,從而獲取信息。(2)如果要處理的頁面比較多,使用第一種方法需要重復些parse方法的一些同樣參數(shù),為此,可以先使用html5lib.HTMLParser構造一個解析器,然后執(zhí)行該解析器的parse方法去處理不同頁面。(3)有時候,要提取的信息難于用xpath的路徑來表達,例如要提取Web頁面中所有超鏈接時,針對每個超鏈接寫一個路徑固然可以,但是編程效率太低。這種情況下可以利用etree的模式匹配能力,運用findall等方法從HTML文檔中找出所有符合條件的標簽。(4)對于html5lib來說,其最大的優(yōu)勢在于具備處理不完整、不規(guī)范、有錯誤標簽的HTML文檔,能夠進行自動修復,因此在一些場合下使用html5lib進行Web頁面信息提取具有一定優(yōu)勢。BeautifulSoupBeautifulSoup是一個可以從HTML或XML文件中提取數(shù)據(jù)的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的標簽節(jié)點下id名稱為link1的子節(jié)點select方法返回的結果是list類型,可以通過下標和text屬性來得到內(nèi)容,例如:soup.select('title')[0].text這個語句獲得頁面的title內(nèi)容。特別地,如果類名本身帶有空格,則應該用點代替其中的空格,例如:對于<divclass="zwliclearfix">的選擇,應該使用soup.select('div.zwli.clearfix')PyQueryPyQuery是一個主要的python庫,它具有類似于JavaScript框架jQuery的功能。PyQuery使用lxml解析器在xml和html文檔上進行操作,并提供了和jQuery類似的語法來解析HTML文檔,支持CSS選擇器,使用也非常方便。官方文檔在/pyquery/可查閱。實例見教材提綱Web信息提取任務及要求Web頁面內(nèi)容提取的思路基于HTML結構的內(nèi)容提取方法基于統(tǒng)計的Web內(nèi)容抽取方法基于JSON的web信息提取Web信息存儲網(wǎng)站也會經(jīng)常升級改版,由此導致寫好的程度針對新版失效了。提取程序就需要有一定的智能性,能夠自動識別某個WEB頁面上的正文位置,其前提是在沒有人工參與的情況下。其基本步驟如下:構建HTML文檔對應的DOM樹;基于某種特征來構建基于DOM樹的信息提取規(guī)則;按照規(guī)則,從HTML中提取信息。規(guī)則的制定或生成方法有以下兩種。第一種,是通過啟發(fā)式方法。一般通過人工對HTML頁面進行觀察和總結,以DOM樹所確定的基本組成單位為規(guī)則中的特征,人工估計其對應的特征值,從而形成啟發(fā)式規(guī)則。第二種,機器學習方法。這種方法通過人工選擇大量的HTML頁面,并對頁面中的正文區(qū)域進行標注,再由程序計算正文節(jié)點中各種特征對應的特征值,以及其他類型節(jié)點對應的特征值。從而將正文節(jié)點的判斷轉換成為一個分類問題,即根據(jù)某些特征及特征值,判斷節(jié)點是否為正文。這樣的問題顯然合適于機器學習方法來解決。提綱Web信息提取任務及要求Web頁面內(nèi)容提取的思路基于HTML結構的內(nèi)容提取方法基于統(tǒng)計的Web內(nèi)容抽取方法基于JSON的web信息提取Web信息存儲許多商品評論是以JSON形式從服務器返回給客戶端的,例如,京東的商品評論是JSON格式的字符串,如下:這種情況下,就不是解析HTML了,而是解析JSON以獲得結構化數(shù)據(jù)。JSON的全稱是JavaScriptObjectNotati

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論