Scrapy: хранить и обрабатывать данные - PullRequest
0 голосов
/ 14 июля 2020

Привет всем, я новичок в парсинге веб-сайтов, и в настоящее время я работаю над парсингом Amazon по цене чего-то, в данном случае это просто пример (эко точка 3, потому что это первый продукт, который я нашел) .

Я не понимаю, как хранить данные, поскольку, как и раньше, я запускал код только с терминала с помощью команды scrapy scrapy crawl Amazon -o amazon.json. Это запускает краулер «Amazon» и сохраняет вывод в json файле «amazon. json». На самом деле я не хочу хранить данные в файле, как эта мысль. Я хочу запускать краулер, когда я запускаю фактический файл python. Придется ли мне создать экземпляр паука Amazon? Или, может быть, как-нибудь запустить команду терминала с помощью os.system?

В любом случае вот код:



class AmazonSpider(scrapy.Spider):
    name = "Amazon"

    start_urls = [
        'https://www.amazon.de/Echo-Dot-3-Gen-Intelligenter-Lautsprecher-mit-Alexa-Sandstein-Stoff/dp/B07PDHSPXT/ref=sr_1_1?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=3TC0DPYYXLIJW&dchild=1&keywords=echo+dot&qid=1594659298&sprefix=echo%2Caps%2C176&sr=8-1'
        ]

    def parse(self, response):
        for price in response.xpath("//td[@class='a-span12']"):       #the element in which the price resides
            yield {
                'price_text': price.xpath("//span[@id='priceblock_ourprice']/text()").get()  
     #the element of the price tag
            }


#Thank you all in advance!!!

1 Ответ

1 голос
/ 14 июля 2020
import scrapy
from scrapy.crawler import CrawlerProcess

class AmazonSpider(scrapy.Spider):
    name = "Amazon"

    start_urls = [
        'https://www.amazon.de/Echo-Dot-3-Gen-Intelligenter-Lautsprecher-mit-Alexa-Sandstein-Stoff/dp/B07PDHSPXT/ref=sr_1_1?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=3TC0DPYYXLIJW&dchild=1&keywords=echo+dot&qid=1594659298&sprefix=echo%2Caps%2C176&sr=8-1'
        ]

    def parse(self, response):
        for price in response.xpath("//td[@class='a-span12']"):       #the element in which the price resides
            yield {
                'price_text': price.xpath("//span[@id='priceblock_ourprice']/text()").get()  
            }

process = CrawlerProcess({
    'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})

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