当前位置: 首页 > 知识库问答 >
问题:

Scrapy输出JSON或CSV

姚洲
2023-03-14
FEED_EXPORT_ENCODING = 'utf-8'

import datetime
now = datetime.datetime.now ()
formatted = now.strftime ("%Y%m%d_%H%M")
FEED_URI = f'\\C:\\Users\\Acer\\Desktop\\{formatted}.csv'
FEED_TYPE = 'csv'
# -*- coding: utf-8 -*-
import scrapy
import datetime


class SpecialOffersSpider(scrapy.Spider):
    name = 'special_offers'
    allowed_domains = ['www.tinydeal.com']

    def start_requests(self):
        yield scrapy.Request(url='https://www.tinydeal.com/specials.html', callback=self.parse, headers={
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
        })

    def parse(self, response):
        for product in response.xpath("//ul[@class='productlisting-ul']/div/li"):
            yield {
                'title': product.xpath(".//a[@class='p_box_title']/text()").get(),
                'url': response.urljoin(product.xpath(".//a[@class='p_box_title']/@href").get()),
                'discounted_price': product.xpath(".//div[@class='p_box_price']/span[1]/text()").get(),
                'original_price': product.xpath(".//div[@class='p_box_price']/span[2]/text()").get(),
                'User-Agent': response.request.headers['User-Agent'].decode('utf-8'),
                'datetime': datetime.datetime.now().strftime("%Y%m%d %H%M")

            }

        next_page = response.xpath("//a[@class='nextPage']/@href").get()

        if next_page:
            yield scrapy.Request(url=next_page, callback=self.parse, headers={
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
            })
scrapy crawl special_offers

当我导出CSV时,数据与我使用EXCEL打开时预期的不同

CSV数据示例{“标题”:“树莓皮3型号B和树莓皮2 E-524988的ABS塑料外壳”,“URL”:“https://www.tinydeal.com/abs-plastic-case-for-raspberry-pi-3-model-b-raspberry-pi-2-p163950.html”,“discounted_price”:“R$12.74”,“original_price”:“R$13.66”,“user-agent”:“mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/76.0.3809.100 Safari/537.36“,”日期“:”20200420 2330“}{”标题“:”3M 9001 KN90防尘口罩呼吸器防尘PM2.5工业建筑polle ;RTH-562440“,”URL“:”https://www.tinydeal.com/3M-9001-KN90-Dust-Masks-Rephilator-Anti-Dust-PM25-Industrial-Construction-Polle-P-179487.html“,”Discounted_Price“:”R$10.29“”用户代理“:”Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/76.0.3809.100 Safari/537.36“,”日期“:”20200420 2330“}{”标题“:”2合1复古蓝莱茵石项链+耳环珠宝套装 ;DJA-562974“,”URL“:”https://www.tinydeal.com/2-in-1-Vintage-Blue-Rhinestone-Necklace-Earring-Jewelry-Set-P-180097.html“,”Discounted_Price“:”R$11.77“,”Original_Price“:”R$30.77“,”用户代理“:”Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/76.0.3809.100 Safari/537.36“,”DateTime“:”20200420 2330“}{”title“:”64GB USB 2.0闪存驱动器USB笔驱动器U盘 ;EFM-561923“,”URL“:”https://www.tinydeal.com/64GB-USB-20-Flash-Drive-USB-Pen-Drive-U-Disk-P-178875.html“,”Discounted_Price“:”R$34.83“,”Original_Price“:”R$99.43“,”User-Agent“.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/76.0.3809.100 Safari/537.36“,”DateTime“:”20200420 2330“}

JSON数据示例

{“标题”:“树莓皮3型号B和树莓皮2 E-524988的ABS塑料外壳”,“URL”:“https://www.tinydeal.com/abs-plastic-case-for-raspberry-pi-3-model-b-raspberry-pi-2-p163950.html”,“discounted_price”:“R$12.74”,“原始价格”:“R$13.66”,“用户代理”:“mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/76.0.3809.100 Safari/537.36“,”日期“:”20200420 2329“}{”标题“:”3M 9001 KN90防尘口罩呼吸器防尘PM2.5工业建筑polle ;RTH-562440“,”URL“:”https://www.tinydeal.com/3M-9001-KN90-Dust-Masks-Rephilator-Anti-Dust-PM25-Industrial-Construction-Polle-P-179487.html“,”Discounted_Price“:”R$10.29“”用户代理“:”Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)chrome/76.0.3809.100 safari/537.36“,”datetime“:”20200420 2329“}{”title“:”2合1复古蓝色莱茵石项链+耳环珠宝套装 ;DJA-562974“,”URL“:”https://www.tinydeal.com/2-in-1-vintage-blue-rhinestone-necklace-earring-jewelry-set-p-180097.html“,”discounted_price“:”r$11.77“,”original_price代理“:”Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/76.0.3809.100 Safari/537.36“,”DateTime“:”20200420 2329“}

谁能告诉我,在这些输出中,哪里出了问题?

共有1个答案

逄嘉熙
2023-03-14

你是怎么得到刮下来的数据的?从你展示的来看,我怀疑你是从终端机上复制的。是这样吗?如果是,可以使用以下命令将其直接保存到文件中:

Scrapy crawl special_offers-o<保存文件的位置>/special_offers.json

希望这能解决你的问题。拜托,让我知道。

 类似资料:
  • 我在scrapy的json输出上遇到问题。Crawler工作良好,cli输出没有问题。XML项目导出器工作正常,输出以正确的编码保存,文本没有转义。 < li >尝试使用管道并直接从那里保存项目。 < li >使用json库中的提要导出器和jsonencoder from > 这些不起作用,因为我的数据包括分支机构。 json 输出文件中的 Unicode 文本是这样转义的:“\u00d6\u01

  • 在生成的csv输出文件中,每行scrapy输出之间都有不需要的空行。 我已经从python2迁移到Python3,我使用的是Windows10。因此,我正在为python3调整我的scrapy项目。 我目前(也是目前唯一)的问题是,当我将scrapy输出写入CSV文件时,每行之间会有一行空行。这已经在这里的几个帖子中强调了(它与视窗有关),但我无法找到一个工作的解决方案。 碰巧,我还在piplin

  • 我正在使用JDBC Kafka连接器将数据从数据库读取到Kafka中。这有效,但它总是以 Avro 格式输出数据,即使我已经指定它应该使用 JSON。我知道它正在这样做,因为当我在 python 中使用来自该主题的消息时,我在每条消息的顶部看到架构。 我像这样运行连接器: connect-JSON-standalone . properties文件的内容是: 和/etc/Kafka-connect

  • 本文向大家介绍JSON格式化输出,包括了JSON格式化输出的使用技巧和注意事项,需要的朋友参考一下 今天有个需求是对输出的JSON进行格式化 首先想到的就是jsBeautifier之类的小插件 搜索了一番看到有一位朋友回答JSON.stringify可以输出格式化的JSON字符串 唔,不错 PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用: 在线JSON代码检验

  • 问题内容: 我在将选项卡中的JSON输出到HTML表时遇到了麻烦(这是javascript / jQuery夜间课程分配的一部分)。请有人看看,并建议我要对表格格式的输出进行哪些修改?我收到成功警报,但表未填充。 谢谢。 和HTML: 问题答案: 代码的主要问题是,在AJAX请求成功完成后,您没有调用任何函数。您至少需要致电才能填充数据。 但是,您可以对代码进行一些改进。首先,删除。这是默认值,并

  • 问题内容: 我该如何转: 到这个: 或者更确切地说,是否有任何有用的资源可供阅读,以便能够生成该JSON输出?所以我知道我需要将我的数据“转换”为正确的数据结构。之后,就像 谢谢 问题答案: 使用json库。 然后使用以下方法转换数据: 并致电: