【问题标题】:Scrapy prints data in a csv file in every other rowScrapy 每隔一行打印一个 csv 文件中的数据
【发布时间】:2017-08-04 14:46:51
【问题描述】:

我在 python scrapy 中编写了一个脚本,用于解析黄页中的一些项目。当我执行我的脚本时,它确实完美地解析了所有项目。但是,每当将这些抓取的数据相应地写入 csv 文件时,我都会遇到问题,当我打开填充了数据的 csv 文件时,我看到数据已打印在每隔一行中。我怎样才能摆脱空白行?我在下面粘贴脚本信息供您参考。

“items.py”包括:

from scrapy.item import Item, Field
class RealypItem(Item):
    Name = Field()
    Address = Field()
    Phone = Field()

“yp.py”又名蜘蛛包含:

from scrapy.spider import BaseSpider

class MySpider(BaseSpider):
     name = "YellowPage"
     allowed_domains = ["yellowpages.com"]
     start_urls = ["https://www.yellowpages.com/search?search_terms=Coffee%20Shops&geo_location_terms=Los%20Angeles%2C%20CA&page=2"]

     def parse(self, response):
        page = response.xpath('//div[@class="info"]')
        for titles in page:
            Title = titles.xpath('.//span[@itemprop="name"]/text()').extract()
            Adr = titles.xpath('.//span[@itemprop="streetAddress" and @class="street-address"]/text()').extract()
            Tel = titles.xpath('.//div[@itemprop="telephone" and @class="phones phone primary"]/text()').extract()
            yield{'Name':Title,'Address':Adr,'Phone':Tel}

我用来运行脚本的命令:

scrapy crawl YellowPage -o items.csv -t csv

这是csv文件中数据填充的部分图片:

【问题讨论】:

标签: python python-3.x csv web-scraping scrapy


【解决方案1】:

一切似乎都很好,只是您用来显示 csv 的任何软件都被 Windows 换行符弄糊涂了。

通常换行符是\n,而在Windows 上是\n\r。操作系统感知的 Scrapy 添加了 Windows 换行符而不是通用换行符。您的 csv 程序需要通用换行符,但获取的是 Windows 换行符。

这里最简单的解决方法是手动从文件中删除\r 字符。

【讨论】:

  • 很抱歉刚才发表评论,因为我不在。您的解决方案似乎也非常简单和有趣。但是,你能告诉我在哪里可以追踪这个错误来修复它,我的意思是我在哪里可以找到它?谢谢。
  • 我不认为这是一个错误。 CSV 并不是真正的可视化文档格式,它实际上只是逗号分隔的值,每行一个值。因此,您应该考虑配置您的可视程序以将 Windows 换行符解释为普通换行符。
  • 这是一个 Windows 问题。我正在努力解决 atm
猜你喜欢
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多