Я пытаюсь поймать все названия продуктов сайта 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)
К сожалению, я не получил все названия продуктов. Я на правильном пути?