Scrapy不写入csv - 创建文件

时间:2017-04-05 13:47:47

标签: python csv scrapy

所以我试图用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

1 个答案:

答案 0 :(得分:0)

由于某些原因,如果我在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()