我正在尝试创建一个网络刮板,该刮板可以从网站中检索多个表格,但是以某种方式无法提取它们
我一直在寻找解决方案,但似乎没有什么适合我的需求:(
def parse(self, response):
tables=[]
for table in response.xpath('//table'):
yield {
tables.append(self.retrieve_table(table))
}
tables[0] = self.extract_table_info(tables[0] + tables[1])
tables[2] = self.extract_table_info(tables[2], 1)
tables[3] = self.extract_table_info(tables[3], 2)
tables[4] = self.extract_table_info(tables[4], 3)
company = { 'info': tables[0],
'oscilations': tables[2]['oscilations'],
'fundamentals': tables[2]['fundamentals'],
'patrimonial_balance_data': tables[3],
'demonstrative_results_data': tables[4] }
import json
with open('data.json', 'w') as f:
json.dump(company, f, ensure_ascii=False)
它返回的错误是
ERROR: Spider must return Request, BaseItem, dict or None, got 'set'
答案 0 :(得分:2)
这是由于以下原因:
for table in response.xpath('//table'):
yield {
tables.append(self.retrieve_table(table))
}
为什么这里需要yield
?看来只需追加就可以满足您的目标:
for table in response.xpath('//table'):
tables.append(self.retrieve_table(table))
甚至只是:
tables = response.xpath('//table')