《數(shù)據(jù)采集與預(yù)處理》課件5:靜態(tài)網(wǎng)頁(yè)爬取模塊-xpath_第1頁(yè)
《數(shù)據(jù)采集與預(yù)處理》課件5:靜態(tài)網(wǎng)頁(yè)爬取模塊-xpath_第2頁(yè)
《數(shù)據(jù)采集與預(yù)處理》課件5:靜態(tài)網(wǎng)頁(yè)爬取模塊-xpath_第3頁(yè)
《數(shù)據(jù)采集與預(yù)處理》課件5:靜態(tài)網(wǎng)頁(yè)爬取模塊-xpath_第4頁(yè)
《數(shù)據(jù)采集與預(yù)處理》課件5:靜態(tài)網(wǎng)頁(yè)爬取模塊-xpath_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

XpathCookie與session的區(qū)別?利用Requests庫(kù)(cookie和post)模擬登錄的2種方法。復(fù)習(xí)總結(jié)requests庫(kù)的高級(jí)用法掌握xpath的基本用法學(xué)會(huì)CSV的數(shù)據(jù)保存方法教學(xué)目標(biāo)1Xpath的基本用法靜態(tài)網(wǎng)頁(yè)數(shù)據(jù)采集--XpathRequests庫(kù)高級(jí)用法2

人郵圖書爬取案例3Requests庫(kù)高級(jí)用法1、會(huì)話設(shè)置2、文件上傳3、SSL證書驗(yàn)證4、代理設(shè)置Requests庫(kù)高級(jí)用法1、會(huì)話設(shè)置在WEB開發(fā)中,服務(wù)器可以為每個(gè)用戶瀏覽器創(chuàng)建一個(gè)會(huì)話對(duì)象(Session對(duì)象)。因此,在需要保存用戶數(shù)據(jù)時(shí),服務(wù)器程序可以把用戶數(shù)據(jù)寫到用戶瀏覽器獨(dú)占的Session中,當(dāng)用戶使用瀏覽器訪問(wèn)其它程序時(shí),其它程序可以從用戶的Session中取出該用戶的數(shù)據(jù),為用戶服務(wù)。requests庫(kù)的session對(duì)象可以方便實(shí)現(xiàn)維護(hù)一個(gè)會(huì)話,而且session對(duì)象可自動(dòng)處理Cookies問(wèn)題。session對(duì)象常用的方法如下:方法描述cookies()獲取cookies信息post()POST方式請(qǐng)求get()GET方式請(qǐng)求headers()獲取請(qǐng)求頭信息head(url,kwargs)發(fā)送一個(gè)head請(qǐng)求............Requests庫(kù)高級(jí)用法importrequestslogin_url="/"data={"username":"usernmae","password":"********",}#使用實(shí)例化requests.sessionsession=requests.session()#使用對(duì)象session記錄登錄后的cookie值session.post(url=login_url,data=data)#使用對(duì)象session記錄的cookie值進(jìn)行不用密碼登錄#下面的url網(wǎng)址是依據(jù)自己的賬號(hào)、密碼登錄進(jìn)去的urlurl="/*************"response=session.get(url=login_url)print(response.text)使用session實(shí)現(xiàn)維護(hù)一個(gè)會(huì)話,具體代碼如下:Requests庫(kù)高級(jí)用法2、文件上傳requests可以模擬提交一些數(shù)據(jù)。若網(wǎng)站需要上傳文件,也可以用它來(lái)實(shí)現(xiàn),下面是一個(gè)實(shí)例:data.txt文件的內(nèi)容是:具體代碼如下:運(yùn)行程序,結(jié)果如下:/importrequestsfiles={'file':open('.../data.txt','rb')}r=requests.post('/post',files=files)print(r.text)上面的網(wǎng)站會(huì)返回響應(yīng),里面包含了files字段和form字段,上傳的文件會(huì)作為files字段來(lái)標(biāo)識(shí)。Requests庫(kù)高級(jí)用法3、SSL證書驗(yàn)證當(dāng)發(fā)送HTTP請(qǐng)求的時(shí)候,它會(huì)檢查SSL證書,requests提供了證書驗(yàn)證的功能。requests庫(kù)可以使用verify參數(shù)控制是否檢查此證書;如果不加verify參數(shù)的話,默認(rèn)是True,會(huì)自動(dòng)驗(yàn)證。SSL證書驗(yàn)證的示例如下:正常訪問(wèn)該網(wǎng)站會(huì)發(fā)出:指定證書的警告,此處通過(guò)verify參數(shù)的設(shè)置忽略SSL證書驗(yàn)證。importloggingimportrequestslogging.captureWarnings(True)response=requests.get('',verify=False)print(response.status_code)Requests庫(kù)高級(jí)用法4、代理設(shè)置對(duì)于一些網(wǎng)站,大規(guī)模爬取或大規(guī)模頻繁請(qǐng)求時(shí),網(wǎng)站可能會(huì)出現(xiàn)以下情況:彈出驗(yàn)證碼;跳到登錄認(rèn)證頁(yè)面;直接封禁客戶端的IP,一段時(shí)間內(nèi)無(wú)法訪問(wèn);通過(guò)代理設(shè)置可以解決上述問(wèn)題,代理服務(wù)器(ProxyServer)的功能是代理網(wǎng)絡(luò)用戶去取得網(wǎng)絡(luò)信息。形象地說(shuō),它是網(wǎng)絡(luò)信息的中轉(zhuǎn)站,是個(gè)人網(wǎng)絡(luò)和Internet服務(wù)商之間的中間代理機(jī)構(gòu),負(fù)責(zé)轉(zhuǎn)發(fā)合法的網(wǎng)絡(luò)信息,對(duì)轉(zhuǎn)發(fā)進(jìn)行控制和登記。Requests庫(kù)高級(jí)用法4、代理設(shè)置requests庫(kù)可以使用proxies參數(shù)設(shè)置代理,具體代碼如下:通過(guò)代理設(shè)置,可以保證正常訪問(wèn)網(wǎng)站,具體運(yùn)行結(jié)果如下:importrequestsproxies={'http':':9743','http':':9743'}response=requests.get('/',proxies=proxies)print(response.status_code)2Requests庫(kù)高級(jí)用法靜態(tài)網(wǎng)頁(yè)數(shù)據(jù)采集----XpathXpath的基本用法1人郵圖書爬取案例3對(duì)于網(wǎng)頁(yè)的節(jié)點(diǎn)來(lái)說(shuō),可以定義id、class或其他屬性,而且節(jié)點(diǎn)之間還有層次關(guān)系,在網(wǎng)頁(yè)中可以通過(guò)XPath或css選擇器來(lái)定位一個(gè)或多個(gè)節(jié)點(diǎn)。在頁(yè)面解析時(shí),利用XPath或css選擇器來(lái)提取某個(gè)節(jié)點(diǎn),然后再調(diào)用相應(yīng)方法獲取正文內(nèi)容或者屬性。Python提供了多種解析庫(kù),常用的解析庫(kù)如下:XpathBeautifulpyqueryXpath的基本用法1、Xpath簡(jiǎn)介XPath即為XML路徑語(yǔ)言(XMLPathLanguage),它是一種用來(lái)確定XML文檔中某部分位置的語(yǔ)言。XPath被開發(fā)者用來(lái)當(dāng)作小型查詢語(yǔ)言,基于XML的樹狀結(jié)構(gòu),用于定位元素節(jié)點(diǎn)、屬性節(jié)點(diǎn)、文本節(jié)點(diǎn),提供在數(shù)據(jù)結(jié)構(gòu)樹中找尋節(jié)點(diǎn)的能力。lxml庫(kù)是一種執(zhí)行效率高并且簡(jiǎn)單易學(xué)的第三方網(wǎng)頁(yè)解析庫(kù),是本書推薦讀者必須要掌握的網(wǎng)頁(yè)解析庫(kù)。lxml庫(kù)不是Python標(biāo)準(zhǔn)庫(kù),需要自行安裝??梢栽诿钚邢率褂胮ip命令安裝lxml庫(kù)。ananconda默認(rèn)會(huì)安裝lxmlpipinstalllxmlXpath的基本用法1、Xpath簡(jiǎn)介XPath,全稱XMLPathLanguage,是一門在XML文檔中查找信息的語(yǔ)言。XPath可用來(lái)在XML/HTML中對(duì)元素和屬性進(jìn)行遍歷。XPath使用路徑表達(dá)式在XML文檔中進(jìn)行導(dǎo)航;XPath包含一個(gè)標(biāo)準(zhǔn)函數(shù)庫(kù);XPath是XSLT中的主要元素;XPath是一個(gè)W3C標(biāo)準(zhǔn)。XPath使用路徑表達(dá)式來(lái)選取XML文檔中的節(jié)點(diǎn)或節(jié)點(diǎn)集。節(jié)點(diǎn)是通過(guò)沿著路徑(path)或者步(steps)來(lái)選取的。Xpath的基本用法2、

Xpath常用規(guī)則選取節(jié)點(diǎn)XPath使用路徑表達(dá)式在XML文檔中選取節(jié)點(diǎn),節(jié)點(diǎn)是通過(guò)沿著路徑或者step來(lái)選取的。常用路徑的表達(dá)式如下表:Xpath的基本用法表達(dá)式描述nodename選取此節(jié)點(diǎn)的所有子節(jié)點(diǎn)。/從根節(jié)點(diǎn)選取。//從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn),而不考慮它們的位置。.選取當(dāng)前節(jié)點(diǎn)。..選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)。@選取屬性。2、

Xpath常用規(guī)則選取節(jié)點(diǎn)Xpath的基本用法<?xmlversion="1.0"encoding="ISO-8859-1"?><bookstore><book><titlelang="en">HarryPotter</title><author>JK.Rowling</author><year>2005</year><price>33</price></book></bookstore>路徑表達(dá)式描述Bookstore選取bookstore元素的所有子節(jié)點(diǎn)。/bookstore選取根元素bookstore。bookstore/book選取屬于bookstore的子元素的所有book元素。//book選取所有book子元素,而不管它們?cè)谖臋n中的位置。bookstore//book選擇屬于bookstore元素的后代的所有book元素,而不管它們位于bookstore之下的什么位置。//@lang選取名為lang的所有屬性。bookstore/bookstorebookstore/book//bookbookstore//book//@lang2、

Xpath常用規(guī)則謂語(yǔ):謂語(yǔ)用來(lái)查找某個(gè)特定的節(jié)點(diǎn)或者包含某個(gè)指定的值的節(jié)點(diǎn),謂語(yǔ)被嵌在方括號(hào)中。在下面的表格中,列出了帶有謂語(yǔ)的一些路徑表達(dá)式實(shí)例:Xpath的基本用法路徑表達(dá)式描述/bookstore/book[1]選取屬于bookstore子元素的第一個(gè)book元素。/bookstore/book[last()]選取屬于bookstore子元素的最后一個(gè)book元素。/bookstore/book[position()<3]選取最前面的兩個(gè)屬于bookstore元素的子元素的book元素。//title[@lang]選取所有擁有名為lang的屬性的title元素。//title[@lang='eng']選取所有title元素,且這些元素?fù)碛兄禐閑ng的lang屬性。/bookstore/book[price>35.00]選取bookstore元素的所有book元素,且其中的price元素的值須大于35.00。/bookstore/book[price>35.00]//title選取bookstore元素中的book元素的所有title元素,且其中的price元素的值須大于35.00。2、

Xpath常用規(guī)則XPath通配符可用來(lái)選取未知的XML元素:在下面的表格中,列出了一些路徑表達(dá)式實(shí)例:Xpath的基本用法通配符描述*匹配任何元素節(jié)點(diǎn)。@*匹配任何屬性節(jié)點(diǎn)。node()匹配任何類型的節(jié)點(diǎn)。路徑表達(dá)式描述/bookstore/*選取bookstore元素的所有子元素。//*選取文檔中的所有元素。//title[@*]選取所有帶有屬性的title元素。2、

Xpath常用規(guī)則通過(guò)在路徑表達(dá)式中使用"|"運(yùn)算符,可以選取若干個(gè)路徑。在下面的表格中,列出了一些路徑表達(dá)式實(shí)例:Xpath的基本用法路徑表達(dá)式描述//book/title|//book/price選取book元素的所有title和price元素。//title|//price選取文檔中的所有title和price元素。/bookstore/book/title|//price選取屬于bookstore元素的book元素的所有title元素,以及文檔中所有的price元素。3.etree模塊通過(guò)Xpath解析DOM樹的時(shí)候要使用lxml庫(kù)的etree模塊,etree模塊可方便地從Html源碼中獲得目標(biāo)內(nèi)容。etree模塊常用的方法如下表所示:Xpath的基本用法方法描述HTML()方法用來(lái)解析字符串格式的HTML文檔對(duì)象,將傳進(jìn)去的字符串轉(zhuǎn)變成_Element對(duì)象。parse()方法按照文檔結(jié)構(gòu)解析本地文件。tostring()方法用來(lái)將_Element對(duì)象轉(zhuǎn)換成字符串。HTMLParser()方法可以解析不完整的HTML文檔對(duì)象。3.etree模塊Xpath的基本用法fromlxmlimportetreetext='''<div>

<ul>

<liclass="item-0"><ahref="link1.html">firstitem</a></li>

<liclass="item-1"><ahref="link2.html">seconditem</a></li>

<liclass="item-inactive"><ahref="link3.html">thirditem</a></li>

<liclass="item-1"><ahref="link4.html">fourthitem</a></li>

<liclass="item-0"><ahref="link5.html">fifthitem</a>

</ul>

</div>'''html=etree.HTML(text)result=etree.tostring(html)print(result.decode('utf-8'))代碼邏輯流程如下:(1)導(dǎo)入lxml模塊的etree模塊;(2)聲明HTML,調(diào)用HTML類進(jìn)行初始化,構(gòu)造XPath解析對(duì)象;(3)調(diào)用tostring()方法輸出修改后的HTML代碼,結(jié)果是bytes類型。運(yùn)行程序,具體結(jié)果如下:可以看到:li節(jié)點(diǎn)標(biāo)簽被補(bǔ)全,并且還自動(dòng)添加了body、html節(jié)點(diǎn)。3.etree模塊etree.parse():按照文檔結(jié)構(gòu)解析本地文件。獲取li節(jié)點(diǎn)所有內(nèi)容,具體代碼如下:Xpath的基本用法fromlxmlimportetreehtml=etree.parse('F:/test.html',etree.HTMLParser())result=html.xpath('//li')print('result:',result)print('result[0]',result[0])Xpath的基本用法3.etree模塊#初始化html結(jié)構(gòu),以下方法二選一doc=etree.formstring(htmlstr)doc=etree.HTML(htmlstr)etree.fromstring和etree.HTML使用上的主要區(qū)別在于根節(jié)點(diǎn)的選擇。etree.HTML認(rèn)為根節(jié)點(diǎn)為<HTML>標(biāo)簽。如果以“/”開頭代表從<HTML>標(biāo)簽開始進(jìn)行查找,并且如果輸入的html文本不完整會(huì)自動(dòng)補(bǔ)全。etree.formstring認(rèn)定當(dāng)前輸入?yún)?shù)的最外層節(jié)點(diǎn)為根節(jié)點(diǎn),如果輸入?yún)?shù)為不完整的html,也不會(huì)自動(dòng)補(bǔ)全。3.etree模塊XPath規(guī)則中可通過(guò)//

或/查詢?cè)氐淖庸?jié)點(diǎn)或子孫節(jié)點(diǎn)。XPath規(guī)則中可通過(guò)..

查詢?cè)氐母腹?jié)點(diǎn)XPath規(guī)則中可通過(guò)@

進(jìn)行屬性過(guò)濾。XPath規(guī)則中可通過(guò)text()方法獲取節(jié)點(diǎn)中的文本。XPath規(guī)則中可通過(guò)@符號(hào)獲取屬性內(nèi)容。XPath規(guī)則中可通過(guò)contains()函數(shù)配置多值屬性。Xpath的基本用法result=html.xpath('//li/a')#子節(jié)點(diǎn)或子孫節(jié)點(diǎn)。result=html.xpath('//a[@href="link4.html"]/../@class')#父節(jié)點(diǎn)result=html.xpath('//li[@class="item-1"]')#屬性過(guò)濾result=html.xpath('//li[@class="item-1"]/a/text()')#文本result=html.xpath('//li/a/@href')#屬性內(nèi)容result=html.xpath(‘//div[contains(@id,“ID”)]/a/text()‘)#多值屬性3Requests庫(kù)高級(jí)用法靜態(tài)網(wǎng)頁(yè)數(shù)據(jù)采集--XPATH人郵圖書爬取案例1

Xpath的基本用法2人郵圖書爬取案例任務(wù):爬取人民郵電出版社圖書列表爬取信息包括書名、作者、價(jià)格、詳情鏈接。爬取后的數(shù)據(jù)保存在CSV文件中。圖書頁(yè)面網(wǎng)址:/book人郵圖書爬取案例任務(wù)分析:為了邏輯更加清晰,使用函數(shù)分別封裝下載器、解析器和數(shù)據(jù)保存功能。通過(guò)“爬取網(wǎng)頁(yè)的通用代碼框架”獲取網(wǎng)頁(yè)內(nèi)容通過(guò)xpath解析網(wǎng)頁(yè)內(nèi)容,獲取數(shù)據(jù)通過(guò)csv.wirter完成數(shù)據(jù)的保存任務(wù)分析:1、通過(guò)“爬取網(wǎng)頁(yè)的

溫馨提示

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

評(píng)論

0/150

提交評(píng)論