Scrapy - XPath 提示



在條件中使用文字節點

當你在 XPath 字串函式中使用文字節點時,使用.(點)而不是.//text(),因為這會產生稱為節點集的文字元素集合。

例如 -

from scrapy import Selector
val = Selector(text = '<a href = "#">More Info<strong>click here</strong></a>')

如果你將節點集轉換為字串,請使用以下格式 -

>>val.xpath('//a//text()').extract()

它將顯示元素為 -

[u'More Info',u'click here']

以及

>>val.xpath("string('//a[1]//text())").extract()

它將結果顯示為 -

[u'More Info']

//node[1] 和 (//node)[1] 的區別

//node[1]顯示在各自父級下定義的所有第一個元素。(//node)[1]僅顯示文件中的第一個元素。

例如 -

from scrapy import Selector
val = Selector(text = """
   <ul class = "list">
      <li>one</li>
      <li>one</li>
      <li>one</li>
   </ul>
   
   <ul class = "list">
      <li>four</li>
      <li>five</li>
      <li>six</li>
   </ul>""")
res = lambda x: val.xpath(x).extract()

以下行顯示在各自父級下定義的所有第一個li元素 -

>>res("//li[1]")

它將顯示結果為 -

[u'<li>one</li>', u'<li>four</li>']

你可以獲取顯示如下所示的完整文件的第一個li元素 -

>>res("(//li)[1]")

它將顯示結果為 -

[u'<li>one</li>']

你還可以顯示在ul父級下定義的所有第一個li元素 -

>>res("//ul//li[1]")

它將顯示結果為 -

[u'<li>one</li>', u'<li>four</li>']

你可以獲取顯示如下所示的整個文件中在ul父級下定義的第一個li元素 -

>>res("(//ul//li)[1]")

它將顯示結果為 -

[u'<li>one</li>']

內建選擇器參考

內建選擇器包括以下類 -

class scrapy.selector.Selector(response = None, text = None, type = None)

上述類包含以下引數 -

  • response - 它是一個 HTMLResponse 和 XMLResponse,用於選擇和提取資料。

  • text - 當沒有可用響應時,它使用 UTF-8 字元編碼對所有字元進行編碼。

  • type - 它指定不同的選擇器型別,例如 html 用於 HTML 響應,xml 用於 XMLResponse 型別,none 用於預設型別。它根據響應型別選擇型別,或者如果與 text 一起使用,則預設設定為 html。

內建選擇器包含以下方法 -

序號 方法 & 描述
1

xpath(query)

它根據 xpath 查詢匹配節點,並將結果作為 SelectorList 例項提供。引數 query 指定要使用的 XPATH 查詢。

2

css(query)

它提供 CSS 選擇器並返回 SelectorList 例項。引數 query 指定要使用的 CSS 選擇器。

3

extract()

它將所有匹配的節點作為 Unicode 字串列表提取出來。

4

re(regex)

它提供正則表示式並將匹配的節點作為 Unicode 字串列表提取出來。引數 regex 可以用作正則表示式或字串,它使用 re.compile(regex) 方法編譯為正則表示式。

5

register_namespace(prefix, uri)

它指定選擇器中使用的名稱空間。如果沒有從非標準名稱空間註冊名稱空間,則無法提取資料。

6

remove_namespaces()

它丟棄名稱空間並允許使用無名稱空間的 xpath 遍歷文件。

7

__nonzero__()

如果選擇了內容,則此方法返回 True,否則返回 False。

SelectorList 物件

class scrapy.selector.SelectorList

SelectorList 物件包含以下方法 -

序號 方法 & 描述
1

xpath(query)

xpath()

2

css(query)

css()

3

extract()

extract()

4

re()

__nonzero__()

5

__nonzero__()

如果列表不為空,則此方法返回 True,否則返回 False。

SelectorList 物件包含一些在此 連結 中解釋的概念。

scrapy_selectors.htm
廣告

© . All rights reserved.