XPath學習筆記

2021-08-04 14:55:37 字數 1590 閱讀 9808

使用lxml對爬取的網頁資料進行解析時,最長使用的方式是xpath,在scrapy爬蟲框架中也提供了相應的函式呼叫.xpath()和.css(), css()的方式實質上底層仍然被轉換成xpath方式進行處理。

首先是xpath的基本使用方法,如圖:

html_doc = """這是乙個鏈結

美女,約嗎?

兄弟,你好嗎

"""selector = etree(html_doc)

# xpath返回的結果通常是列表形式,通過xpath字串內索引或者外部索引來取某個單獨的結果

# 字串內部索引從1開始,外部索引是python列表索引,從0開始.

selector.xpath('//div[@id="desc"][1]')

selector.xpath('//div[@id="desc"]')[0]

# 通常xpath()返回的是selector物件,通過呼叫extract()來提取具體字串內容

selector.xpath('//div[@id="desc"]')[0].extract()

selector.xpath('//div[@id="desc"][1]').extract()

# text() 提取元素字串,返回selector物件

# string(.)提取字串(包括子元素中的),返回selector物件

selector.xpath('//div[@id="desc"]')[0].extract() # 美女,

selector.xpath('//div[@id="desc"]/string(.)')[0].extract()#美女,約嗎?

# contains(a, b) a中包含b

# starts-with(a, b) a以b開頭

selector.xpath('//div[contains(@class, "header")]')[0].extract()

selector.xpath('//div[starts-with(@id, "header")]')[0].extract()

# 獲取元素的兄弟節點.獲取所有相鄰span,獲取第乙個相鄰span的文字內容

selector.xpath('//div[contains(@id, "desc")]/following-sibling::span')

selector.xpath('//div[contains(@id, "desc")]/following-sibling::span[1]/text()')[0].extract()

# 取屬性. 取id屬性值

selector.xpath('//div[@id="desc"]'/@id)

XPath學習筆記

xpath 是一門在 xml 文件中查詢資訊的語言。xpath 用於在 xml 文件中通過元素和屬性進行導航。xpath包含有乙個標準的函式庫,是xslt中的主要元素,同時也是乙個w3c標準。若把xml用樹來表示,那麼根節點最上層的節點,根節點是唯一的。樹上其它的所有元素節點都是子節點或後代節點。元...

Xpath學習筆記

在 xpath 中,有七種型別的節點 元素 屬性 文字 命名空間 處理指令 注釋以及文件節點 或稱為根節點 lang eng harry pottertitle 29.99price book lang eng learning xmltitle 39.95price book bookstore ...

Xpath學習筆記

from lxml import etree import os os.path.abspath text first item html1 etree.html text1 result html1.xpath li contains class,li and name item a text 選...