Python爬蟲入坑筆記 - XPath快速定位網(wǎng)頁內(nèi)容

XPATH語句可以用來快速定位一個XML文本中的內(nèi)容,當(dāng)然也可以是HTML文本,這里我們使用lxml庫來解析,達(dá)到快速批量獲取網(wǎng)頁相似內(nèi)容的功能

安裝

$ pip install lxml

基本使用

假設(shè)匹配出網(wǎng)頁所含所有圖片的鏈接

from lxml import etree
import requests

html = requests.get('http://www.lzu.edu.cn').content.decode('utf-8')
##獲取網(wǎng)頁代碼

dom_tree = etree.HTML(html)

###XPath匹配
links = doc_tree.xpath('//img/@src')

for i in links:
    print(i)

##將會輸出網(wǎng)頁中所有圖片標(biāo)簽的鏈接

XPath語法講解

我們假設(shè)有如下網(wǎng)頁

<html>
    <head>
        <title>這是標(biāo)題</title>
    </head>
    <body>
        <div class="cn_search_engine">
            <a >百度</a>
        </div>
        <div class="other_search_engine">
            <a >Bing</a>
            <a >Google</a>
        </div>
    </body>
</html>

如上,HTML標(biāo)簽是一個樹形結(jié)構(gòu),我們稱這個為DOM樹,xpath匹配出其中的元素,相當(dāng)于在樹中查找子節(jié)點啊,因此效率相對正則表達(dá)式要高

  • "http://"和"/"的區(qū)別
    兩者都用來表示一個節(jié)點的路徑,不同節(jié)點名用“/”分開
    //代表相對路徑,匹配可以是任意深度的節(jié)點
    / 代表絕對路徑,故對于網(wǎng)頁來說,匹配從/html開始

如同樣是解析上述數(shù)據(jù)中的所有的鏈接,下面兩語句等價

....
##省略若干代碼,dom_tree為我們解析之后的etree對象

##語句一:
dom_tree.xpath('/html/body/div/a/@href')

##語句二:
dom_tree.xpath('//div/a/@href')
  • 獲取元素屬性和文字的區(qū)別
dom_tree.xpath('//div/a/@href')
#將返回所有的鏈接網(wǎng)址

dom_tree.xpath('//div/a/text()')
#將獲取所有鏈接的名稱


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容