所以我试图用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
答案 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()