python - 使用Scrapy时如何导出为csv?

标签 python csv scrapy

总的来说,我仍然认为自己对 Python 很陌生,所以请耐心等待!我正在尝试使用 Scrapy 从网站收集一些数据。收集数据后,我希望将其导出到 CSV 文件。到目前为止,我对以下代码的尝试导致文件根本没有设置为表。

我的导出代码:

scrapy crawl products -o myinfo.csv -t csv

我得出的结论是,我需要编写某种管道来定义我的列标题。尽我所能,这意味着在以下两个文件中编写以下代码。

pipelines.py

class AllenheathPipeline(object):
    def process_item(self, item, spider):
        return item


from scrapy.conf import settings
from scrapy.contrib.exporter import CsvItemExporter

class AllenHeathCsvItemExporter(CsvItemExporter):

    def __init__(self, *args, **kwargs):
        delimiter = settings.get('CSV_DELIMITER', ',')
        kwargs['delimiter'] = delimiter

        fields_to_export = settings.get('FIELDS_TO_EXPORT', [])
        if fields_to_export :
            kwargs['fields_to_export'] = fields_to_export

        super(AllenHeathCsvItemExporter, self).__init__(*args, **kwargs)

settings.py

BOT_NAME = 'allenheath'

SPIDER_MODULES = ['allenheath.spiders']
NEWSPIDER_MODULE = 'allenheath.spiders'

ITEM_PIPELINES = {
    'allenheath.pipelines.AllenheathPipeline': 300,
    'allenheath.pipelines.AllenHeathCsvItemExporter': 800,
}

FEED_EXPORTERS = {
    'csv': 'allenheath.allen_heath_csv_item_exporter.AllenHeathCsvItemExporter',
}
FIELDS_TO_EXPORT = [
    'model',
    'shortdesc',
    'desc',
    'series'
]

CSV_DELIMITER = "\t" # For tab

不幸的是,一旦我再次运行导出命令:

scrapy crawl products -o myinfo.csv -t csv

我收到此错误:

File "C:\allenheath\allenheath\pipelines.py", line 27, in __init__
  super(AllenHeathCsvItemExporter, self).__init__(*args, **kwargs)
TypeError: __init__() takes at least 2 arguments (1 given)

任何帮助或指导将不胜感激,因为我在这里碰壁了。谢谢。

最佳答案

您无需定义用于导出到 CSV 的管道。

Scrapy 自动处理该问题,有关 header 的信息取自您的 Item 定义。

只需删除管道并重试即可。顺便说一句,-t csv 在最新的 Scrapy 版本中是可选的:目标格式是从文件扩展名推断出来的。

关于python - 使用Scrapy时如何导出为csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29908509/

相关文章:

.net - 如何在 CsvHelper CsvWriter 中保留前导零?

python-2.7 - 使用 XPath 选择 HTML 文档中除脚本节点之外的每个文本节点

python - 如何生成圆周内的齐次泊松点过程?

javascript - 我可以使用 python3 从 https ://www. rt.com/提取任何页面的评论吗?

python:从相对路径导入

Excel 从 CSV 获取不完整的行

python - Bruce Eckel 设计模式 : I'm confused on how it works 中的代码片段

r - 在R中将Excel文件列表动态转换为CSV文件

python - 抓取 N 项后停止 Scrapy

python - 尝试使用 Scrapy 抓取 LinkedIn 时出现 999 响应