关于Scrapy pipeline.py的新手问题

2 投票
4 回答
3855 浏览
提问于 2025-04-15 16:12

我正在学习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']

根据你项目的具体情况进行调整。

撰写回答