Scrapy - Selectorlist 对象
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 响应主体中选择描述元素,它将 SelectorList 对象返回为 −
>>res.xpath("//description")
您可以通过将命名空间注册为 − 从 Google Base XML 供稿中获取价格值
>>res.register_namespace("g", "http://base.google.com/ns/1.0") >>res.xpath("//g:price").extract()
删除命名空间
在创建 Scrapy 项目时,您可以删除使用 Selector.remove_namespaces() 方法删除命名空间,并使用元素名称与 XPath 正确配合使用。
有两个原因不总是在项目中调用命名空间删除过程 −
您可以删除需要重复文档并修改所有元素的命名空间,这会导致使用 Scrapy 抓取文档的昂贵操作。
在某些情况下,您需要使用命名空间,这些命名空间可能与某些元素名称和命名空间发生冲突。这种情况经常发生。