【问题标题】:How do I remove the blank spaces in my csv scrapy如何删除 csv scrapy 中的空格
【发布时间】:2018-05-16 05:55:48
【问题描述】:

如何删除 csv 中的空格?

我跑:scrapy crawl quotes -o quotes.csv。并且输出如图所示。

我知道这是一个 Windows 问题,因为在 Windows 上使用 csv 时我必须使用下面的代码。例如在使用 selenium 时。

with open('C:\\fa.csv', 'a+', newline='', encoding="utf-8") as outfile:

Scrapy 处理 Csv 的方式不同,我使用的是

scrapy crawl quotes -o quotes.csv

There is no: scrapy crawl quotes -o /n quotes.csv

代码:

import scrapy


class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
    ]

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').extract_first(),
                'author': quote.css('small.author::text').extract_first(),
                'tags': quote.css('div.tags a.tag::text').extract(),
            }

        next_page = response.css('li.next a::attr(href)').extract_first()
        if next_page is not None:
            next_page = response.urljoin(next_page)
            yield scrapy.Request(next_page, callback=self.parse)

【问题讨论】:

  • scrapy 中可能有某种 csv 配置... HMMMM。也许在 init 文件中......我可以在 Anaconda 中调整它......无论它在哪里。也许这会解决。
  • 在普通文本编辑器中打开 csv 文件,看看是否有空行。如果没有空行,则您用于打开 csv 文件的程序存在问题。
  • @furas 这个问题也出现在记事本++中
  • 为什么在open() 中使用newline=''?它接缝您的数据有'\n',而您在放入 csv 之前忘记将其删除。你知道text.strip() 命令吗?
  • 如何在 scrapy 中删除/添加 \n?我不熟悉 text.strip 命令。我只是在使用 selenium 时使用换行符,因为 csv 似乎会造成间隙

标签: python python-3.x csv scrapy scrapy-spider


【解决方案1】:

您可以尝试以下修复:

from scrapy.conf import settings
from scrapy.contrib.exporter import CsvItemExporter


class FixCsvItemExporter(CsvItemExporter):

    def __init__(self, *args, **kwargs):
        newline = settings.get('CSV_NEWLINE', '')
        kwargs['newline'] = newline
        super(FixCsvItemExporter, self).__init__(*args, **kwargs)

然后,在您的爬虫目录中的settings.py 文件中,您需要添加以下内容:

FEED_EXPORTERS = {
    'csv': 'path.to.sourcefile.FixCsvItemExporter',
}

【讨论】:

    【解决方案2】:

    我遇到了同样的问题并自己找到了解决方案:Scrapy python csv output has blank lines between each row

    也就是说,我相信在某个时候会有补丁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 2013-04-09
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多