关于Scrapy pipeline.py的新手问题
我正在学习Scrapy的教程。为了测试这个过程,我创建了一个新项目,并添加了一些文件:
你可以在Scrapy小组查看我的帖子,里面有脚本的链接,我在这里不能发超过一个链接。
我的爬虫运行得很好,它能抓取标题标签之间的文本,并把这些文本放到FirmItem里。
[whitecase.com] INFO: Passed FirmItem(title=[u'White & Case LLP - Lawyers - Rachel B. Wagner '])
但是我在管道处理的部分遇到了问题。我想把这个FirmItem添加到一个csv文件中,这样我就可以把它放到数据库里。
我对Python还很陌生,正在边学边做。如果有人能给我一点提示,告诉我怎么让pipelines.py工作,把抓取到的数据放到items.csv里,我会非常感激。
谢谢。
4 个回答
0
Python有一个模块可以用来读写CSV文件,这样做比自己手动写输出要安全得多(因为自己写的话,可能会搞错引号和转义字符...)
import csv
csvfile = csv.writer(open('items.csv', 'w'))
csvfile.writerow([ firmitem.title, firmitem.url ])
csvfile.close()
1
使用内置的 CSV 数据导出功能(在版本0.10中提供)和 CsvItemExporter 一起使用。
9
我觉得他们在Scrapy教程中回答了你具体的问题。
建议使用CSV模块,和其他人提到的一样。把下面的内容放到你的pipelines.py
文件里。
import csv
class CsvWriterPipeline(object):
def __init__(self):
self.csvwriter = csv.writer(open('items.csv', 'wb'))
def process_item(self, domain, item):
self.csvwriter.writerow([item['title'][0], item['link'][0], item['desc'][0]])
return item
别忘了通过在settings.py文件中的ITEM_PIPELINES设置里添加它来启用这个管道,像这样:
ITEM_PIPELINES = ['dmoz.pipelines.CsvWriterPipeline']
根据你项目的具体情况进行调整。