- Scrapy 教程
- Scrapy - 首頁
- Scrapy 基本概念
- Scrapy - 概述
- Scrapy - 環境配置
- Scrapy - 命令列工具
- Scrapy - 爬蟲 (Spider)
- Scrapy - 選擇器
- Scrapy - 專案 (Item)
- Scrapy - 專案載入器 (Item Loader)
- Scrapy - Shell
- Scrapy - 專案管道 (Item Pipeline)
- Scrapy - 資料匯出 (Feed exports)
- Scrapy - 請求 & 響應
- Scrapy - 連結提取器 (Link Extractor)
- Scrapy - 設定
- Scrapy - 異常處理
- Scrapy 實戰專案
- Scrapy - 建立專案
- Scrapy - 定義專案
- Scrapy - 第一個爬蟲
- Scrapy - 爬取
- Scrapy - 提取專案
- Scrapy - 使用專案
- Scrapy - 跟蹤連結
- Scrapy - 爬取資料
- Scrapy 有用資源
- Scrapy - 快速指南
- Scrapy - 有用資源
- Scrapy - 討論
Scrapy - 選擇器列表物件
HTML 響應中的選擇器示例
以下是關於 HTMLResponse 的一些示例,我們將使用用選擇器例項化的 HTMLResponse 物件,如下所示:
res = Selector(html_response)
您可以從 HTML 響應正文中選擇h2元素,這將返回 SelectorList 物件:
>>res.xpath("//h2")
您可以從 HTML 響應正文中選擇h2元素,這將返回 Unicode 字串列表:
>>res.xpath("//h2").extract()
它返回 h2 元素。
以及
>>res.xpath("//h2/text()").extract()
它返回 h2 標籤下定義的文字,不包括 h2 標籤元素。
您可以遍歷 p 標籤並顯示 class 屬性:
for ele in res.xpath("//p"):
print ele.xpath("@class").extract()
XML 響應中的選擇器示例
以下是關於 XMLResponse 的一些示例,我們將使用用選擇器例項化的 XMLResponse 物件,如下所示:
res = Selector(xml_response)
您可以從 XML 響應正文中選擇 description 元素,這將返回 SelectorList 物件:
>>res.xpath("//description")
您可以透過註冊名稱空間來獲取 Google Base XML feed 中的價格值:
>>res.register_namespace("g", "http://base.google.com/ns/1.0")
>>res.xpath("//g:price").extract()
移除名稱空間
在建立 Scrapy 專案時,您可以使用 Selector.remove_namespaces() 方法移除名稱空間,並使用元素名稱來正確地處理 XPath。
在專案中並非總是需要呼叫名稱空間移除過程,原因有兩個:
移除名稱空間需要重複處理文件並修改所有元素,這會導致 Scrapy 爬取文件的成本很高。
在某些情況下,您需要使用名稱空間,這些名稱空間可能會與某些元素名稱和名稱空間衝突。這種情況非常常見。
scrapy_selectors.htm
廣告