- 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
广告