Scrapy返回项目以外的数据

时间:2013-01-03 16:36:33

标签: python web-crawler scrapy

我已经写了一个蜘蛛来爬行网页(我从这里得到了所有的帮助),它返回了具有所有必需属性的项目。 它返回一个表单字典, {“count”:24,“Gender”:“Female”,“Age”:“25-34”,“Location”:“Edinburgh”,“Name”:“abcde”}

我希望它只返回一个列表: [24,“女性”,“25-34”,“爱丁堡”,“abcde”]

然后我可以将其存储在一个文件中。 我怎么能这样做?

编辑:但我无法返回字典值。如果我使用 return item.values() 我收到错误...... Spider必须返回Request,BaseItem或None得到unicode

2 个答案:

答案 0 :(得分:3)

我可能误解了这个要求,但如果你希望你的输出文件看起来更像列表而不是字典,那么你应该输出一个csv文件而不是一个json文件? csv feed导出使用CSVItemExporter类,并将以下列形式生成输出:

count,Gender,Age,Location,Name 
24,Female,25-34,Edinburgh,abcde

应该可以通过运行以下命令来实现此目的:

scrapy crawl dmoz -o items.csv -t csv

如果您想生成没有标题的输出,那么您需要将CSVItemExporter子类化并将include_headers_line参数设置为False,因为该参数的默认值为True。

答案 1 :(得分:1)

您只能从词典中提取值并执行您喜欢的任何操作:

>>> d = {"count": 24, "Gender": "Female ", "Age": "25-34", "Location": "Edinburgh", "Name": "abcde"}
>>>
>>> d.values()
[24, 'Female ', '25-34', 'Edinburgh', 'abcde']