Scrapy - очистить страницу при перенаправлении на страницу с защитой - PullRequest
0 голосов
/ 25 марта 2020
# -*- coding: utf-8 -*-
import scrapy


class WayfairSpider(scrapy.Spider):
    name = 'wayfair'
    #allowed_domains = ['wayfair.com']
    start_urls = ['https://www.wayfair.com/appliances/pdp/zline-kitchen-and-bath-30-4-cu-ft-freestanding-gas-range-zlkn2652.html']

    def parse(self, response):

        #get top level item
        items = response.css('.PdpLayoutVariationB-infoBlock')
        for product in items:
            item = WayfairspiderItem()

        #get Price
            productPrice = product.css('.notranslate::text').getall()

            item['productPrice'] = productPrice
            yield item

enter image description here

enter image description here

Два изображения, которые я разместил, показывают, как я получил селекторы, которые я ' Я использую в моем коде. При запуске этого паука я ожидаю получить цену товара со страницы, однако я получаю пустые результаты. Я тестировал response.css('.notranslate').getall() в Scrapy Shell, и результат был []. Буду признателен, если кто-нибудь сможет взглянуть и проверить мои селекторы!

Редактировать:

Я считаю, что моя проблема на самом деле может быть такой:

При запуске моего паука я получаю это:

2020-03-26 10:41:41 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET https://www.wayfair.com/v/captcha/show?goto=https%3A%2F%2Fwww.wayfair.com%2Fappliances%2Fpdp%2F-zlkn2652.html%3F&px=1&captcha_status=0> from <GET https://www.wayfair.com/appliances/pdp/-zlkn2652.html>
2020-03-26 10:41:41 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.wayfair.com/v/captcha/show?goto=https%3A%2F%2Fwww.wayfair.com%2Fappliances%2Fpdp%2F-zlkn2652.html%3F&px=1&captcha_status=0> (referer: None)

Похоже, я меня перенаправляют на страницу Captcha, так как я смогу обойти это или это одна из тех неразрешимых проблем?

Вот что я пробовал:

ROBOTSTXT_OBEY = False
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'

1 Ответ

0 голосов
/ 26 марта 2020

Поскольку ваш start_url является страницей сведений, вам не нужно перебирать элементы.

Попробуйте это:

def parse(self, response):
    item = WayfairspiderItem()
    productPrice = product.css('.StandardPriceBlock .notranslate::text').get()
    item['productPrice'] = productPrice
    yield item

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