擅长:python、mysql、java
<p>我强烈建议您使用<a href="https://docs.scrapy.org/en/latest/topics/loaders.html" rel="nofollow noreferrer">Item Loaders</a>。您将能够在单个位置自动更新所选字段。获取第一个非空值,连接多个结果等。
首先使用<code>TakeFirst</code>处理器在items.py中定义<code>Product</code>:</p>
<pre><code>class ProductItem(scrapy.Item):
data= scrapy.Field()
selo = scrapy.Field()
vlr_atual= scrapy.Field(output_processor=TakeFirst())
</code></pre>
<p>下一步在你的蜘蛛身上使用它:</p>
<pre><code>from scrapy.loader import ItemLoader
....
for produto in response.xpath("//div[@id='dp']"):
l = ItemLoader(item=ProductItem(), selector=produto)
l.add_value('data', datetime.datetime.now().strftime("%Y%m%d"))
l.add_xpath("vlr_atual", ".//span[@id='priceblock_ourprice']/text()")
l.add_xpath("vlr_atual", ".//span[@id='priceblock_saleprice']/text()")
...
l.load_item()
</code></pre>