- Scrapy 教程
- Scrapy - 首頁
- Scrapy 基本概念
- Scrapy - 概述
- Scrapy - 環境
- Scrapy - 命令列工具
- Scrapy - 爬蟲 (Spiders)
- Scrapy - 選擇器
- Scrapy - 項 (Items)
- Scrapy - 項載入器 (Item Loaders)
- Scrapy - Shell
- Scrapy - 項管道 (Item Pipeline)
- Scrapy - Feed 匯出
- Scrapy - 請求 & 響應
- Scrapy - 連結提取器
- Scrapy - 設定
- Scrapy - 異常
- Scrapy 即時專案
- Scrapy - 建立專案
- Scrapy - 定義項
- Scrapy - 第一個爬蟲
- Scrapy - 爬取
- Scrapy - 提取項
- Scrapy - 使用項
- Scrapy - 跟蹤連結
- Scrapy - 爬取資料
- Scrapy 有用資源
- Scrapy - 快速指南
- Scrapy - 有用資源
- Scrapy - 討論
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 物件包含一些在此 連結 中解釋的概念。