【问题标题】:Scrapy not writing to csv - creates fileScrapy 不写入 csv - 创建文件
【发布时间】:2017-04-05 13:47:46
【问题描述】:

所以我正在尝试使用 scrapy 制作我的第一个爬虫,到目前为止一切顺利,但由于某种原因,我无法让我的爬虫输出到 csv 文件。

它会创建文件,但是当我关闭命令提示符停止爬虫,然后打开它创建的文件时,文件是空的......

谁能看到我可能做错了什么以及为什么没有写入文件?

我正在尝试从维基百科获取标题和图片网址列表。

class WikispyderSpider(CrawlSpider):
    name = "wikiSpyder"

    custom_settings = {
        'ROBOTSTXT_OBEY': False,
        'DOWNLOAD_DELAY': 5
    }

    allowed_domains = ['wikipedia.org']
    start_urls = ['https://en.wikipedia.org/wiki/Wikipedia:Unusual_articles']

    rules = (
        Rule(LinkExtractor(canonicalize=True, unique=True), follow=True, callback="parse_link"),
    )

    def parse_link(self, response):
        hxs = HtmlXPathSelector(response)
        item = WikicrawlerItem()
        item['title'] = hxs.select('//h1[contains(@id,"firstHeading")]/text()').extract()
        item['imgURL'] = hxs.select('//div[contains(@class, "thumbinner")]//a/@href')[0].extract()
        print(item)
        yield item

pipelines.py

import csv

class WikicrawlerPipeline(object):
    def __init__(self):
        self.csvwriter = csv.writer(open('results.csv', 'w'))

    def process_item(self, item, spider):
        self.csvwriter.writerow([item['title'][0], item['imgURL'][0]])
        return item

items.py

import scrapy

class WikicrawlerItem(scrapy.Item):
    title = scrapy.Field()
    imgURL = scrapy.Field()
    pass

【问题讨论】:

  • 是否正在打印该项目?
  • 您是否正确注册了您的项目管道?它是否出现在启动日志中?
  • 是的,它正在打印项目,是的,我将管道放在设置中,我知道管道正在工作,因为每次删除它并重新运行爬虫时也会创建 results.csv 文件。该文件只是空白
  • 您是否能够在设置中没有自定义项目管道的情况下写入 CSV? IE。你什么时候做scrapy crawl wikiSpyder -o output.csv?
  • 不,我无法做到,但我终于通过管道将其写入。发布解决方案

标签: python csv scrapy


【解决方案1】:

由于某种原因,如果我在 init 函数中打开 csv.writer,我的程序将无法运行。阅读更多文档后,我尝试在 open_spider 函数和 VIOLA 中打开 csv.writer!我有一个工作作家。

pipelines.py

import csv

class WikicrawlerPipeline(object):

    def open_spider(self, spider):
        self.csvwriter = csv.writer(open('results.csv', 'a'))
        self.csvwriter.writerow({'Title', 'ImageURL'})
        self.ids_seen = set()

【讨论】:

    猜你喜欢
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多