大數(shù)據(jù)采集與預(yù)處理(微課版) 課件 項目3 動態(tài)網(wǎng)頁數(shù)據(jù)解析_第1頁
大數(shù)據(jù)采集與預(yù)處理(微課版) 課件 項目3 動態(tài)網(wǎng)頁數(shù)據(jù)解析_第2頁
大數(shù)據(jù)采集與預(yù)處理(微課版) 課件 項目3 動態(tài)網(wǎng)頁數(shù)據(jù)解析_第3頁
大數(shù)據(jù)采集與預(yù)處理(微課版) 課件 項目3 動態(tài)網(wǎng)頁數(shù)據(jù)解析_第4頁
大數(shù)據(jù)采集與預(yù)處理(微課版) 課件 項目3 動態(tài)網(wǎng)頁數(shù)據(jù)解析_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項目三

動態(tài)網(wǎng)頁數(shù)據(jù)解析目錄Content1

使用BeautifulSoup解析“浪潮云說”網(wǎng)頁數(shù)據(jù)2

使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)項目導(dǎo)言零請求部分解析部分網(wǎng)絡(luò)爬蟲程序通過模擬瀏覽器發(fā)送請求并獲取響應(yīng)通過對響應(yīng)后返回的頁面內(nèi)容進(jìn)行解析,并通過定位到數(shù)據(jù)所在元素獲取數(shù)據(jù),最終實(shí)現(xiàn)網(wǎng)頁數(shù)據(jù)的采集學(xué)習(xí)目標(biāo)零知識目標(biāo)了解Xpath和BeautifulSoup相關(guān)概念熟悉Xpath節(jié)點(diǎn)定位掌握Xpath數(shù)據(jù)提取精通BeautifulSoup使用技能目標(biāo)具備Xpath解析文檔和提取數(shù)據(jù)的能力具備安裝BeautifulSoup的能力具備使用BeautifulSoup提取頁面數(shù)據(jù)的能力具備網(wǎng)頁數(shù)據(jù)解析與提取的能力素養(yǎng)目標(biāo)具備良好的溝通能力和團(tuán)隊合作精神具備強(qiáng)烈的責(zé)任感和積極的工作態(tài)度具備較強(qiáng)的執(zhí)行能力任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹Xpath簡介任務(wù)技能lxml解析庫安裝、lxml解析庫使用定位元素定位、屬性定位數(shù)據(jù)提取屬性值提取、元素包含內(nèi)容提取任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹1Xpath簡介Xpath,英文全稱為“MLPathLanguage”,是一種通過元素和屬性遍歷定位XML文檔中信息的路徑語言。盡管Xpath用于XML文檔內(nèi)容的搜索,但同樣可以作用于HTML等半結(jié)構(gòu)化文檔。Xpath選擇功能十分強(qiáng)大,通過簡明的路徑表達(dá)式,能夠使用在大多數(shù)需要定位節(jié)點(diǎn)的場景中,不僅可以實(shí)現(xiàn)節(jié)點(diǎn)的定位外,Xpath還可以實(shí)現(xiàn)字符串、數(shù)值、時間的匹配以及節(jié)點(diǎn)、序列的處理等。任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹(1)lxml解析庫安裝Step1輸入“/project/lxml/#files”,進(jìn)入lxml源碼文件下載界面選擇符合Python版本的lxml源碼文件并下載使用pip命令通過lxml源碼文件進(jìn)行l(wèi)xml的安裝打開Python的交互環(huán)境,輸入importlxml,如果不報錯,就表示安裝成功Step2Step3Step4任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹(2)lxml解析庫使用etree模塊常用方法方法描述HTML()解析HTML文檔XML()解析XML文檔parse()解析文件tostring()將節(jié)點(diǎn)對象轉(zhuǎn)化為bytes類型xpath()實(shí)現(xiàn)標(biāo)簽的定位和內(nèi)容的捕獲任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹①HTML()HTML方法包含參數(shù)參數(shù)描述text字符串類型的HTML文本parser解析器base_url網(wǎng)站根地址,用于處理網(wǎng)頁資源的相對路徑parser可選參數(shù)值參數(shù)值描述XMLParser解析XMLXMLPullParser利用事件流模型來解析XMLHTMLParser解析HTMLHTMLPullParser利用事件流模型來解析HTML任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹②

XML()XML()與HTML()方法基本相同,不同之處在于HTML主要用于對HTML文檔內(nèi)容進(jìn)行解析,而XML()則用于解析XML格式文檔。語法格式:fromlxmlimportetreeetree.XML(text,parser=None,base_url=None)任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹③parse()XML()和HTML()主要使用在數(shù)據(jù)采集之后,可以解析Requests、Urllib的request模塊發(fā)送請求后響應(yīng)的XML或HTML內(nèi)容,而parse()方法則用于對本地文件中包含的內(nèi)容進(jìn)行解析。語法格式:fromlxmlimportetreeetree.parse(source,parser=None,base_url=None)任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹parse()方法包含參數(shù)參數(shù)描述source文件路徑,包含xml、html、txt等格式文件parser解析器base_url網(wǎng)站根地址,用于處理網(wǎng)頁資源的相對路徑任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹④tostring()tostring()方法主要作用于Element對象,可以將Element對象包含內(nèi)容轉(zhuǎn)換為bytes類型。語法格式:fromlxmlimportetreeetree.tostring(Element,pretty_print=True,encoding="utf-8")任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹tostring()方法包含參數(shù)參數(shù)描述ElementElement對象pretty_print格式化輸出,值為True或Falseencoding編碼格式任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹⑤xpath()XPath()即為lxml的主要方法,可以解析XML或HTML文檔并從中提取指定內(nèi)容,其同樣作用于Element對象。在使用時,其可以接收路徑表達(dá)式提取數(shù)據(jù),并將結(jié)果以Element對象列表的形式返回。語法格式:fromlxmlimportetreeetree.xpath(path,namespaces=None,extensions=None,smart_strings=True)任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹xpath方法包含參數(shù)參數(shù)描述path路徑表達(dá)式namespaces名稱空間extensions擴(kuò)展smart_strings是否開啟字符串的智能匹配任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹2定位(1)元素定位符號和方法描述/從根節(jié)點(diǎn)選取//從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn),不考慮它們的位置.選擇當(dāng)前節(jié)點(diǎn)..選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)|設(shè)置多個路徑表達(dá)式*匹配任何元素節(jié)點(diǎn)nodeName選取名為nodeName的所有節(jié)點(diǎn)nodeName[n]選取名為nodeName第n個節(jié)點(diǎn)nodeName[last()]選取名為nodeName最后一個節(jié)點(diǎn)nodeName[last()-n]選取名為nodeName倒數(shù)第n+1個節(jié)點(diǎn)nodeName[position()<n]選取名為nodeName前n-1個節(jié)點(diǎn)node()匹配任何類型的節(jié)點(diǎn)元素定位常用符號和方法任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹常用的元素定位表達(dá)式表達(dá)式描述//div從根節(jié)點(diǎn)選取所有div元素//div/p/a[2]選取第二個a元素//div/p[1]|//div/p[last()]選取第一個、最后1個p元素//div/*選取所有div節(jié)點(diǎn)下的任意元素節(jié)點(diǎn)任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹節(jié)點(diǎn)關(guān)系常用屬性屬性描述ancestor選取當(dāng)前節(jié)點(diǎn)的所有先輩(父、祖父等)ancestor-or-self選取當(dāng)前節(jié)點(diǎn)的所有先輩(父、祖父等)以及當(dāng)前節(jié)點(diǎn)本身self選取當(dāng)前節(jié)點(diǎn)child選取當(dāng)前節(jié)點(diǎn)的所有子元素descendant選取當(dāng)前節(jié)點(diǎn)的所有后代元素(子、孫等)descendant-or-self選取當(dāng)前節(jié)點(diǎn)的所有后代元素(子、孫等)以及當(dāng)前節(jié)點(diǎn)本身parent選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)following選取文檔中當(dāng)前節(jié)點(diǎn)的結(jié)束標(biāo)簽之后的所有節(jié)點(diǎn)following-sibling選取當(dāng)前節(jié)點(diǎn)之后的所有同級節(jié)點(diǎn)preceding選取文檔中當(dāng)前節(jié)點(diǎn)的開始標(biāo)簽之前的所有節(jié)點(diǎn)preceding-sibling選取當(dāng)前節(jié)點(diǎn)之前的所有同級節(jié)點(diǎn)attribute選取當(dāng)前節(jié)點(diǎn)的所有屬性任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹屬性定位常用符號符號描述@屬性選取包含指定屬性的元素@*選取包含任意屬性的元素@[條件表達(dá)式]選取屬性符合指定值的元素(2)屬性定位任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹Xpath中常用的運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符算術(shù)運(yùn)算符任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹3數(shù)據(jù)提取(1)屬性值提取語法格式:nodeName/@屬性在Xpath中,定位到節(jié)點(diǎn)后,只需通過“@屬性”的方式獲取該節(jié)點(diǎn)包含指定屬性的屬性值,并以列表的形式返回。任務(wù)3-1:使用Xpath解析“新聞動態(tài)”網(wǎng)頁數(shù)據(jù)壹(2)元素包含內(nèi)容提取語法格式:nodeName/text()相比于屬性值的提取,元素包含內(nèi)容的提取通過text()方法實(shí)現(xiàn),內(nèi)容包含文本、換行符、制表符等,并且結(jié)果同樣以列表的形式返回。3-1:任務(wù)實(shí)施壹使用Xpath定位到每條新聞信息所在節(jié)點(diǎn)查看網(wǎng)頁確認(rèn)被采集的信息從lxml庫導(dǎo)入etree模塊,解析Urllib庫獲取的HTML文檔通過tostring()方法將解析后返回的Element對象轉(zhuǎn)換成bytes類型,驗證是否抓取成功定位數(shù)據(jù)所在節(jié)點(diǎn),并通過屬性值提取或文本內(nèi)容提取的方式實(shí)現(xiàn)電影名稱、電影簡介、電影評分和評價人數(shù)的獲取將HTML文檔解析代碼封裝為函數(shù),添加獲取下一頁功能,并將數(shù)據(jù)存儲到本地CSV文件中完成數(shù)據(jù)的解析和提取任務(wù)3-2:使用BeautifulSoup解析“浪潮云說”網(wǎng)頁數(shù)據(jù)貳BeautifulSoup安裝任務(wù)技能BeautifulSoup使用Python的pip工具安裝BeautifulSoup有四個版本,在安裝時只需在BeautifulSoup后添加版本號即可安裝指定版本BeautifulSoup使用標(biāo)簽選擇器、方法選擇器、CSS選擇器任務(wù)3-2:使用BeautifulSoup解析“浪潮云說”網(wǎng)頁數(shù)據(jù)貳1BeautifulSoup安裝Step1打開命令窗口,輸入“pipinstallbeautifulsoup4”下載命令,進(jìn)行BeautifulSoup4下載安裝Step2使用“importbs4”方式導(dǎo)入BeautifulSoup解析庫驗證安裝是否成功,不出現(xiàn)錯誤即可說明安裝成功任務(wù)3-2:使用BeautifulSoup解析“浪潮云說”網(wǎng)頁數(shù)據(jù)貳常見的解析器解析器優(yōu)勢劣勢Python標(biāo)準(zhǔn)庫Python的內(nèi)置標(biāo)準(zhǔn)庫執(zhí)行速度適中文檔容錯能力強(qiáng)Python(2.7.3or3.2.2)前的版本中文檔容錯能力差lxmlHTML解析器速度快文檔容錯能力強(qiáng)需要安裝C語言庫lxmlXML解析器速度快唯一支持XML的解析器需要安裝C語言庫html5lib最好的容錯性以瀏覽器的方式解析文檔生成HTML5格式的文檔速度慢任務(wù)3-2:使用BeautifulSoup解析“浪潮云說”網(wǎng)頁數(shù)據(jù)貳2BeautifulSoup使用語法格式:importbs4bs4.BeautifulSoup(markup,parser)與Xpath解析器相同,BeautifulSoup同樣不能直接用于網(wǎng)頁內(nèi)容的采集,其需要與Urllib、Requests等爬蟲庫結(jié)合使用。在使用時,通過BeautifulSoup()方法實(shí)現(xiàn)文檔的解析。任務(wù)3-2:使用BeautifulSoup解析“浪潮云說”網(wǎng)頁數(shù)據(jù)貳BeautifulSoup()方法包含參數(shù)參數(shù)描述markup文檔parser解析器parser參數(shù)值參數(shù)值描述html.parserPython標(biāo)準(zhǔn)庫lxmllxmlHTM解析器xmllxmlXML解析器html5libhtml5lib任務(wù)3-2:使用BeautifulSoup解析“浪潮云說”網(wǎng)頁數(shù)據(jù)貳(1)標(biāo)簽選擇器語法格式:importbs4soup=bs4.BeautifulSoup(markup,parser).node.parameter標(biāo)簽選擇器主要用于通過文檔中包含的標(biāo)簽進(jìn)行元素的定位,有普通節(jié)點(diǎn)、子節(jié)點(diǎn)、子孫節(jié)點(diǎn)、父節(jié)點(diǎn)、兄弟節(jié)點(diǎn)等,并在定位節(jié)點(diǎn)后實(shí)現(xiàn)具體信息的獲取。任務(wù)3-2:使用BeautifulSoup解析“浪潮云說”網(wǎng)頁數(shù)據(jù)貳標(biāo)簽選擇器參數(shù)參數(shù)描述name節(jié)點(diǎn)名稱,通過“.”連接node關(guān)系節(jié)點(diǎn)獲取屬性,如兄弟節(jié)點(diǎn)、父節(jié)點(diǎn)等parameter數(shù)據(jù)提取屬性parameter參數(shù)包含屬性屬性描述name獲取節(jié)點(diǎn)的名稱attrs['屬性']獲取節(jié)點(diǎn)所有屬性string獲取節(jié)點(diǎn)內(nèi)容任務(wù)3-2:使用BeautifulSoup解析“浪潮云說”網(wǎng)頁數(shù)據(jù)貳node參數(shù)包含屬性屬性描述contents直接子節(jié)點(diǎn)children子孫節(jié)點(diǎn)descendants所有子孫節(jié)點(diǎn)parent節(jié)點(diǎn)的父節(jié)點(diǎn)parents節(jié)點(diǎn)的祖先節(jié)點(diǎn)next_sibling節(jié)點(diǎn)下一個兄弟節(jié)點(diǎn)previous_sibling節(jié)點(diǎn)上一個兄弟節(jié)點(diǎn)next_siblings節(jié)點(diǎn)后面的全部兄弟節(jié)點(diǎn)previous_siblings節(jié)點(diǎn)前面的全部兄弟節(jié)點(diǎn)任務(wù)3-2:使用BeautifulSoup解析“浪潮云說”網(wǎng)頁數(shù)據(jù)貳(2)方法選擇器相比于標(biāo)簽選擇器,只能通過標(biāo)簽名稱逐級進(jìn)行節(jié)點(diǎn)的定位,設(shè)置較為繁瑣,靈活性不好,而方法選擇器可以通過指定的參數(shù)設(shè)置標(biāo)簽以及相關(guān)屬性實(shí)現(xiàn)節(jié)點(diǎn)的直接定位,實(shí)現(xiàn)節(jié)點(diǎn)包含內(nèi)容的獲取。BeautifulSoup常用方法選擇器參數(shù)描述name節(jié)點(diǎn)名稱,通過“.”連接node關(guān)系節(jié)點(diǎn)獲取屬性,如兄弟節(jié)點(diǎn)、父節(jié)點(diǎn)等任務(wù)3-2:使用BeautifulSoup解析“浪潮云說”網(wǎng)頁數(shù)據(jù)貳語法格式:importbs4soup=bs4.BeautifulSoup(markup,parser)soup.find(name,attrs,recursiv

溫馨提示

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

評論

0/150

提交評論