【发布时间】:2021-08-16 13:31:19
【问题描述】:
此蜘蛛抓取通过将 csv 文件中的唯一产品 ID 添加到 URL 并从给定页面抓取数据而形成的串联链接。
使用 -O 命令将结果写入 .CSV 时,仅写入第一个结果。
所有项目都被正确选择和循环,正确的结果显示在终端的输出中,但只有第一个项目被写入 CSV。
你不能在这样的循环中使用 if else 吗? 定义产量时,response.xpath 中的 x 是否需要另一个?
写入路径和输出文件没有错误
我尝试了几种变体并创建了一个 for try 除了每个元素产生但结果是相同的
如果您有任何解决此问题的建议,请告诉我,谢谢
import scrapy
import pandas as pd
def readcsv():
df = pd.read_csv('tsuji2.csv')
#return df.values
return df['URL'].values.tolist()
class TsujijsonSpider(scrapy.Spider):
name = 'tsujijson22'
start_urls = ['https://www.example.co.jp/store/online/']
def parse(self, response):
for URL in readcsv():
base_url = 'https://www.example.co.jp/store/online/p/{}'
yield scrapy.Request(base_url.format(URL), callback=self.data)
def data(self, response):
try:
if response.xpath(u"//span[contains(text(), '〇')]").get():
yield{
'zaiko green' : response.css('span.green::text').get()}
elif response.xpath(u"//span[contains(text(), '△')]").get():
yield{
'zaiko red': response.css('span.red:nth-of-type(1)::text').get()}
else: yield {
'zaiko red2': response.css('span.upperRight::text').get()}
except:
pass
【问题讨论】:
标签: python scrapy export-to-csv