Я не могу использовать Scrapy на всех веб-страницах - PullRequest
0 голосов
/ 21 апреля 2020

Я новичок в использовании Scrapy, и мне нужно извлечь информацию о некоторых ценах Walmart Canada. Проблема в том, что он ничего не извлекает, но это происходит только со мной в Walmart Canada, поскольку при использовании Scrapy на другой веб-странице он работает правильно.

import scrapy
from scrapy.item import Item, Field
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.loader import ItemLoader


class WalmartItem(Item):
    barcodes = Field()
    sku = Field()


class WalmartCrawler(CrawlSpider):
    name = 'walmartCrawler'
    start_urls = [
        'https://www.walmart.ca/en/ip/apple-gala/6000195494284']


    def parse(self, response):
        item = ItemLoader(WalmartItem(), response)
        item.add_xpath(
            'barcodes', "//div[@class='css-1dar8at e1cuz6d10']/div[@class='css-w8lmum e1cuz6d11']/div[contains(text(), 'UPC')]/parent::node()/div[2]/text()")
        item.add_xpath(
            'sku', "//*[contains(text(), 'UPC')]/parent::node()/div[2]/text()")
        yield item.load_item()

1 Ответ

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

Ваш xpath не работает, один из способов сделать это - использовать регулярное выражение

import re,ast
sku = re.search(r'"sku":"(\d+)',response.text).groups()[0]
barcodes = ast.literal_eval(re.search(r'"upc":(\[.*?\])',response.text).groups()[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...