我正在研究Scrapy教程。为了测试这个过程,我用这些文件创建了一个新项目:
See my post in Scrapy group for links to scripts, I cannot post more than 1 link here.
蜘蛛运行良好并在标题标签之间刮擦文本并将其放入FirmItem
[whitecase.com] INFO: Passed FirmItem(title=[u'White & Case LLP - Lawyers - Rachel B. Wagner '])
但我陷入了管道流程。我想将此FirmItem添加到csv文件中,以便将其添加到数据库中。
我是python的新手,我正在学习。如果有人给我一些关于如何使pipelines.py正常工作以便将已删除的数据放入items.csv中,我将不胜感激。
谢谢。
答案 0 :(得分:9)
我认为他们会在Scrapy Tutorial中解决您的具体问题。
它建议,正如其他人在这里使用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']
根据项目的具体情况进行调整。
答案 1 :(得分:1)
使用内置的CSV feed export(在v0.10中提供)和CsvItemExporter。
答案 2 :(得分:0)
Python有一个module for reading/writing CSV files,这比自己编写输出更安全(并使所有引用/转义正确...)
import csv
csvfile = csv.writer(open('items.csv', 'w'))
csvfile.writerow([ firmitem.title, firmitem.url ])
csvfile.close()
答案 3 :(得分:-1)
打开文件并写入。
f = open('my.cvs','w')
f.write('h1\th2\th3\n')
f.write(my_class.v1+'\t'+my_class.v2+'\t'+my_class.v3+'\n')
f.close()
或者在stdout上输出结果,然后将stdout重定向到文件./my_script.py >> res.txt