Выход Scrapy JSON или CSV - PullRequest
       9

Выход Scrapy JSON или CSV

1 голос
/ 21 апреля 2020

Я пытаюсь очистить веб-страницу с помощью этого кода settings.py

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'

с этим special_offers.py

# -*- 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

проблема заключается в том, что при экспорте JSON данные поступают без запятой между} {. чтобы мой файл не читался Power BI, например

, когда я экспортирую CSV, данные стали другими, тогда я ожидаю, что при открытии с использованием EXCEL

Пример данных CSV {"title": " ABS Plasti c Чехол для Raspberry Pi 3, модель B & Raspberry Pi 2 E-524988 "," url ":" https://www.tinydeal.com/abs-plastic-case-for-raspberry-pi-3-model-b-raspberry-pi-2-p-163950.html "," discounts_price ":" R $ 12,74 "," original_price ": «R $ 13,66», «Пользователь-агент»: «Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537,36 (K HTML, как Gecko) Chrome / 76.0.3809.100 Safari / 537.36», «datetime ":" 20200420 2330 "} {" title ":" Пылезащитные маски 3M 9001 KN90 Респиратор Против пыли PM2.5 Промышленное строительство Polle RTH-562440 "," url ":" https://www.tinydeal.com/3m-9001-kn90-dust-masks-respirator-anti-dust-pm25-industrial-construction-polle-p-179487.html "," discounts_price ":" R $ 10,29 "," original_price ":" R $ 12,40 "," Пользователь-агент ":" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (K HTML, как Gecko) Chrome / 76.0.3809.100 Safari / 537.36 "," datetime ":" 20200420 2330 "} {" title ":" Набор из 2-в-1 старинных ожерелий и голубых украшений со стразами DJA-562974 "," url ":" https://www.tinydeal.com/2-in-1-vintage-blue-rhinestone-necklace-earring-jewelry-set-p-180097.html "," Discounte d_price ":" R $ 11,77 "," original_price ":" R $ 30,77 "," Пользователь-агент ":" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537,36 (K HTML, как у Gecko) Chrome / 76.0.3809.100 Safari / 537.36 "," datetime ":" 20200420 2330 "} {" title ":" 64 ГБ USB 2.0 Fla sh Диск USB Pen Drive U Disk EFM-561923 "," url ":" https://www.tinydeal.com/64gb-usb-20-flash-drive-usb-pen-drive-u-disk-p-178875.html "," discounts_price ":" R $ 34,83 ​​"," original_price ":" R $ 99,43 "," User-Agent ":" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (K HTML, как Gecko) Chrome / 76.0.3809.100 Safari / 537.36 "," datetime ":" 20200420 2330 "}

JSON пример данных

{"title": "ABS Plasti c Чехол для Raspberry Pi 3 Модель B & Raspberry Pi 2 E-524988", "url": "https://www.tinydeal.com/abs-plastic-case-for-raspberry-pi-3-model-b-raspberry-pi-2-p-163950.html "," discounts_price ":" R $ 12,74 "," original_price ":" R $ 13,66 "," User-Agent ":" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (K HTML, как Gecko) Chrome / 76.0.3809.100 Safari / 537.36 "," datetime ":" 20200420 2329 "} {" title ":" 3M 9001 KN90 Пылезащитные маски Респиратор Защита от пыли PM2.5 Опрос промышленного строительства RTH-562440 "," url ":" https://www.tinydeal.com/3m-9001-kn90-dust-masks-respirator-anti-dust-pm25-industrial-construction-polle-p-179487.html "," discounts_price ":" R $ 10.29 "," o riginal_price ":" R $ 12,40 "," Пользователь-агент ":" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537,36 (K HTML, как у 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 "," discounts_price ":" R $ 11,77 "," original_price ":" R $ 30,77 "," User-Agent ":" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537,36 (K HTML, как у Gecko) Chrome / 76.0.3809.100 Safari / 537.36 "," datetime ":" 20200420 2329 "}

Может кто-нибудь сказать мне, где я не так в этих выходах?

1 Ответ

1 голос
/ 21 апреля 2020

Как вы получаете очищенные данные? Из того, что вы показали, я подозревал, что вы скопировали из терминала. Это оно? Если это так, есть способ сохранить его непосредственно в файл, используя эту команду:

scrapy crawl special_offers -o <where save the file>/special_offers.json

Надеюсь, это решит вашу проблему. Пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...