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 标签并将类属性显示为

for ele in res.xpath("//p"):
   print ele.xpath("@class").extract()

XML 响应的选择器示例

下面是一些关于 XMLResponse 的例子,我们将有 XMLResponse 对象,它是用选择器实例化的,如下所示

res = Selector(xml_response)

我们可以从 XML 响应正文中选择描述元素,它返回 SelectorList 对象作为

res.xpath("//description")

我们可以通过将命名空间注册为

res.register_namespace("g", "http://base.google.com/ns/1.0")
res.xpath("//g:price").extract()

删除命名空间

当我们创建 Scrapy 项目时,我们可以使用 Selector.remove_namespaces() 方法删除命名空间,并使用元素名称与 XPaths 一起适当地工作。

在项目中不总是调用名称空间删除过程有两个原因

  • Scrapy爬取文档时需要重复文档和修改所有导致操作代价高昂的元素的命名空间可以去掉。
  • 在某些情况下,我们需要使用命名空间,这些可能会与某些元素名称和命名空间发生冲突。 这种情况经常发生。

查看笔记

扫码一下
查看教程更方便