Сканирование не удачно с Scrapy - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь поймать все названия продуктов сайта https://www.kalkhoff -bikes.com / с помощью скрапа. Но результат ниже ожидаемого. Что я делаю не так? Моей первой попыткой было следующее:

import scrapy

class ToScrapeSpider(scrapy.Spider):
    name = 'Kalkhoff_1'

    start_urls = [
        'https://www.kalkhoff-bikes.com/'
    ]
    allowed_domains = [
        'kalkhoff-bikes.com'
    ]

    def parse(self, response):
        for item in response.css('ul.navMain__subList--sub > li.navMain__subItem'):
            yield {
                    'Name': item.css("span.navMain__subText::text").get()
                   }

        for href in response.css('li.navMain__item a::attr(href)'):
            yield response.follow(href, self.parse)

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

import scrapy
from scrapy_splash import SplashRequest

class ToScrapeSpider(scrapy.Spider):
    name = 'Kalkhoff_2'

    start_urls = [
        'https://www.kalkhoff-bikes.com/'
    ]
    allowed_domains = [
        'kalkhoff-bikes.com'
    ]

    def start_requests(self):
        for url in self.start_urls:
            yield SplashRequest(url, self.parse,
                endpoint='render.html',
                args={'wait':0.5},
            )

    def parse(self, response):
        for item in response.css('ul.navMain__subList--sub > li.navMain__subItem'):
            yield {
                    'Name': item.css("span.navMain__subText::text").get()
                   }

        for href in response.css('li.navMain__item a::attr(href)'):
            yield response.follow(href, self.parse)

К сожалению, я не получил все названия продуктов. Я на правильном пути?

...