JsonLinesItemExporter可以工作,但是会不断覆盖导出文档的第一行,而不是列出列表

时间:2019-05-30 11:44:15

标签: python scrapy scrapy-pipeline

我的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

1 个答案:

答案 0 :(得分:0)

根据How do you append to a file in Python?

,问题已解决

我需要做的就是使用另一种写作模式 更改 文件=打开('VS.jsonl','wb') 解决问题 file = open('VS.jsonl','ab')