我正在使用这个代码。最后两个值是这样的,因为我正在测试它们中的任何一个是否会起作用 - 但它们不起作用。
def parse_again(self, response):
sel = Selector(response)
meta = sel.xpath('//div[@class="LWimg"]')
items = []
for m in meta:
item = PageItem()
item['link'] = response.url
item['Stake'] = m.select('//div[@class="stakedLW"]/h1/text()').extract()
item['Value'] = m.select('//p[@class="value"]/text()').extract()
item['Value'] = m.select('//div[@class="value"]/span/span/text()').extract()
items.append(item)
return items
从此 html 源代码检索数据
<div class="LWimg">
<div class="stakedLW">
<span class="title">Stake</span>
<span class="value">5.00</span>
<span class="currency">€</span>
我的items.py
看起来像这样
from scrapy.item import Item, Field
class Page(Item):
Stake = Field()
Value = Field()
问题是未检索数据,即最终没有将任何内容保存到 .csv
中。
欢迎任何意见。
最佳答案
您正在两次填充 Value
字段,因此只有最后一个才有效,我认为正确的方法应该是:
item['Value'] = response.xpath('//div[@class="stakedLW"]//span[@class="value"]/text()').extract_first()
其他字段不是必需的,只需 link
字段即可。
关于python - scrapy中没有xpath结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34028029/