《數據采集與預處理》課件5:靜態網頁爬取模塊-xpath_第1頁
《數據采集與預處理》課件5:靜態網頁爬取模塊-xpath_第2頁
《數據采集與預處理》課件5:靜態網頁爬取模塊-xpath_第3頁
《數據采集與預處理》課件5:靜態網頁爬取模塊-xpath_第4頁
《數據采集與預處理》課件5:靜態網頁爬取模塊-xpath_第5頁
已閱讀5頁,還剩30頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

XpathCookie與session的區別?利用Requests庫(cookie和post)模擬登錄的2種方法。復習總結requests庫的高級用法掌握xpath的基本用法學會CSV的數據保存方法教學目標1Xpath的基本用法靜態網頁數據采集--XpathRequests庫高級用法2

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

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

Xpath常用規則選取節點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>路徑表達式描述Bookstore選取bookstore元素的所有子節點。/bookstore選取根元素bookstore。bookstore/book選取屬于bookstore的子元素的所有book元素。//book選取所有book子元素,而不管它們在文檔中的位置。bookstore//book選擇屬于bookstore元素的后代的所有book元素,而不管它們位于bookstore之下的什么位置。//@lang選取名為lang的所有屬性。bookstore/bookstorebookstore/book//bookbookstore//book//@lang2、

Xpath常用規則謂語:謂語用來查找某個特定的節點或者包含某個指定的值的節點,謂語被嵌在方括號中。在下面的表格中,列出了帶有謂語的一些路徑表達式實例:Xpath的基本用法路徑表達式描述/bookstore/book[1]選取屬于bookstore子元素的第一個book元素。/bookstore/book[last()]選取屬于bookstore子元素的最后一個book元素。/bookstore/book[position()<3]選取最前面的兩個屬于bookstore元素的子元素的book元素。//title[@lang]選取所有擁有名為lang的屬性的title元素。//title[@lang='eng']選取所有title元素,且這些元素擁有值為eng的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常用規則XPath通配符可用來選取未知的XML元素:在下面的表格中,列出了一些路徑表達式實例:Xpath的基本用法通配符描述*匹配任何元素節點。@*匹配任何屬性節點。node()匹配任何類型的節點。路徑表達式描述/bookstore/*選取bookstore元素的所有子元素。//*選取文檔中的所有元素。//title[@*]選取所有帶有屬性的title元素。2、

Xpath常用規則通過在路徑表達式中使用"|"運算符,可以選取若干個路徑。在下面的表格中,列出了一些路徑表達式實例:Xpath的基本用法路徑表達式描述//book/title|//book/price選取book元素的所有title和price元素。//title|//price選取文檔中的所有title和price元素。/bookstore/book/title|//price選取屬于bookstore元素的book元素的所有title元素,以及文檔中所有的price元素。3.etree模塊通過Xpath解析DOM樹的時候要使用lxml庫的etree模塊,etree模塊可方便地從Html源碼中獲得目標內容。etree模塊常用的方法如下表所示:Xpath的基本用法方法描述HTML()方法用來解析字符串格式的HTML文檔對象,將傳進去的字符串轉變成_Element對象。parse()方法按照文檔結構解析本地文件。tostring()方法用來將_Element對象轉換成字符串。HTMLParser()方法可以解析不完整的HTML文檔對象。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)導入lxml模塊的etree模塊;(2)聲明HTML,調用HTML類進行初始化,構造XPath解析對象;(3)調用tostring()方法輸出修改后的HTML代碼,結果是bytes類型。運行程序,具體結果如下:可以看到:li節點標簽被補全,并且還自動添加了body、html節點。3.etree模塊etree.parse():按照文檔結構解析本地文件。獲取li節點所有內容,具體代碼如下: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結構,以下方法二選一doc=etree.formstring(htmlstr)doc=etree.HTML(htmlstr)etree.fromstring和etree.HTML使用上的主要區別在于根節點的選擇。etree.HTML認為根節點為<HTML>標簽。如果以“/”開頭代表從<HTML>標簽開始進行查找,并且如果輸入的html文本不完整會自動補全。etree.formstring認定當前輸入參數的最外層節點為根節點,如果輸入參數為不完整的html,也不會自動補全。3.etree模塊XPath規則中可通過//

或/查詢元素的子節點或子孫節點。XPath規則中可通過..

查詢元素的父節點XPath規則中可通過@

進行屬性過濾。XPath規則中可通過text()方法獲取節點中的文本。XPath規則中可通過@符號獲取屬性內容。XPath規則中可通過contains()函數配置多值屬性。Xpath的基本用法result=html.xpath('//li/a')#子節點或子孫節點。result=html.xpath('//a[@href="link4.html"]/../@class')#父節點result=html.xpath('//li[@class="item-1"]')#屬性過濾result=html.xpath('//li[@class="item-1"]/a/text()')#文本result=html.xpath('//li/a/@href')#屬性內容result=html.xpath(‘//div[contains(@id,“ID”)]/a/text()‘)#多值屬性3Requests庫高級用法靜態網頁數據采集--XPATH人郵圖書爬取案例1

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

溫馨提示

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

評論

0/150

提交評論