xpath的簡單應用
xpath是一門在 XML /HTML文檔中查找信息的語言,在爬蟲中可以很方便的找到自己想要的信息。我就它的幾點簡單應用進行演示。
先要安裝lxml,調出命令窗口,pip install lxml就可。
我們用糗百來做演示,網址https://www.qiushibaike.com/8hr/page/1/
第一先導入模塊
第二獲取網頁的源代碼
這樣源代碼已經拿下來了。head是User-Agent,把爬蟲偽裝成瀏覽器的一個東西,在使用requests.get()時,把它傳給參數headers即可。
第三就是確定我們要拿的信息。
對網頁F12進行審查元素,可以知道我們要獲取的東西都在這一個個的div中,一共25個,在網頁上也是25條內容。
比如,我們想把裡頭的發的具體內容取出來,就是這樣的文本內容
在文本處,右鍵,進行檢查
得到結果
然後,我們就要獲取他的xpath路徑了,在此處文本的span處,右鍵,copy,copy xpath。我用的是Chrome瀏覽器,它可以自動生成xpath.
粘貼出來是這樣的
現在我們就可以把這個內容取出來
etree.HTML()方法是把網頁源代碼的str類型轉換成html格式,這樣才能被xpath識別使用。
簡要介紹一下xpath1的具體含義
//*[@id="qiushi_tag_120047719"]/a/div/span/text()[1]
//表示從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。比如//div就是選擇所有的div的所有子元素,不管這個div的位置在哪。
*號是一個通配符,匹配任何元素節點。
[@id="qiushi_tag_120047719"]這個表示屬性值為"qiushi_tag_120047719"的屬性id,[]裡面的內容作為謂語,也可以說是選擇條件。
//*[@id="qiushi_tag_120047719"]這一整塊的意思就是,只要是屬性名為id,屬性值為"qiushi_tag_120047719"的節點都選擇出來。
/a/div/span/text()[1]這一部分的意思是在前面選中的元素下,選擇a元素,再選擇a元素下的div元素,再選擇下面的span元素,text()方法是將裡面的文本取出來,[1]是謂語,意思是第一段文本。
箭頭所指的就是第二段文本了。
知道了這些我們就可以根據自己需要,自己自定義xpath了。
根據觀察,我們發現文本都是在值為content的名為class的屬性的div裡面,所以我們可以構造這樣一個xpath,把這一整個網頁裡面的文本都取出來。
xpath2 = //div[@class="content"]/span/text()
我們必須知道,我們通過xpath提取出來的東西都是以列表儲存起來的,我們可以把它列印出來看看
的確都取到了,但是我們發現這個列表長度是45,跟我們之前說的25不一致。不著急,有問題可以調試,出現了問題,解決問題才有意思,記得才會更加牢。
我們列印第一個元素看看。
再看一下其再網頁中的結構
我們可以得出結論,每出現一個<br>換行就會算成列表的一個元素。
如果想獲取下面三個內容也是可以的,方法大同小異。可以試一試。
哈哈很簡單的應用,就說到這裡啦。
xpath還有很多複雜的用法。可以參考學習http://www.runoob.com/xpath/xpath-syntax.html
推薦閱讀:
※1000+收藏了!小白自學Python一本通
※如何用100行Python代碼做出魔性聲控遊戲「八分音符醬」
※chapter12 - 關注者
※python基礎-def
※4. Command line tool 命令行工具