我的scrapy脚本不断覆盖导出文件的第一行,而不是逐行存储抓取的数据。
我检查了文档,发现管道没有问题。
有人可以帮我找出我做错了什么地方吗?
管道
from scrapy.exporters import JsonLinesItemExporter
class VitalsourcePipeline(object):
def process_item(self, item, spider):
file = open('VS.jsonl','wb')
exporter = JsonLinesItemExporter(file)
exporter.start_exporting()
exporter.export_item(item)
exporter.finish_exporting()
file.close()
return item
蜘蛛
import re
from VitalSource.items import VitalsourceItem
from scrapy.selector import Selector
from scrapy.spiders import SitemapSpider
class VsSpider(SitemapSpider):
name = 'VS'
allowed_domains = ['vitalsource.com']
sitemap_urls = ['https://storage.googleapis.com/vst-stargate-production/sitemap/sitemap1.xml.gz']
# sitemap_urls = ['http://vitalsource.com/sitemap.xml.gz']
sitemap_rules = [
('/products/', 'parse_product'),
]
def parse_product(self, response):
item = VitalsourceItem()
item['Ebook_Title'] = response.css('.product-overview__title-header::text').extract()[1].strip()
print(item)
return item
答案 0 :(得分:0)
根据How do you append to a file in Python?
,问题已解决我需要做的就是使用另一种写作模式 更改 文件=打开('VS.jsonl','wb') 解决问题 file = open('VS.jsonl','ab')