通常,项目加载器会在将值传递给输入处理器之前自动提取数据:
- 提取xpath1中的数据,并通过名称字段的输入处理器传递。 (Scrapy docs)
醇>
是否可以为项加载器的某些元素更改此行为,因此我可以传入更复杂的结构(在我看来是选择器)?
我有一个这样的HTML文档:
<a class="foo" href="http://example.com">example 1</a>
<a class="foo" href="http://example.org">example 2</a>
现在我想在蜘蛛中获取这些链接元素
loader.add_css('links', '.foo')
并在项目加载器中解析它们以获取值列表(在输出处理器之后),如下所示:
[("http://example.com", "example 1"), ("http://example.org", "example 2")]
但是,由于项目加载器会自动将输入转换为unicode,因此这似乎并不容易。
答案 0 :(得分:1)
您可以使用.add_value()
和“手动”构建text
和href
s的列表:
links = [(item.css('::text').extract()[0],
item.css('::attr(href)').extract()[0])
for item in response.css('.foo')]
loader.add_value('links', links)