我有一个pandas dataframe,我想用作scrapy start url,函数get_links向dataframe打开了xlsx,这有一个列链接,我想在spider上运行蜘蛛,<</p>
我将其转换为dict,
dictdf = df.to_dict(orient='records']
我知道这些链接可以通过url = url ['link']实现
dictdf = {'Data1':'1','Data2':'2','LINK':'www.link.com',.....,'Datan':'n'}
# start urls
def start_requests(self):
urls = get_links()
for url in urls:
yield scrapy.Request(url=url['LINK'], callback=self.parse)
我的问题是有什么方法可以将整个dict传递到parse((中,因此在输出中也产生了dictdf?和废除的输出,
{'ScrapedData1':'d1','Data1':'1','Data2':'2','LINK':'www.link.com',.....,'Datan':'n'}
如果我正确理解您,您想从start_requests
方法中处理一些数据。
为此,您可以用户Request.meta
属性:
def start_requests(self):
data = [{
'url': 'http://httpbin.org',
'extra_data': 'extra',
}]
for item in data:
yield Request(item['url'], meta={'item': item})
def parse(self, response):
item = response.meta['item']
# {'url': 'http://httpbin.org', 'extra_data': 'extra'}