Базовый паук работает.
Затем я преобразовал его в CrawlSpider и правила, к сожалению, теперь паук больше не работает.
Базовый паук тестируется на странице сведений о продукте:
https://www.ah.nl/producten/product/wi395939/ah-kleintje-boerenkool
Затем он получает предметы, как указано.
Меня интересует использование CrawlSpider для прохождения всех бонусных статей https://www.ah.nl/bonus
Зайдите на страницу с описанием товара и получите указанную информацию.
Как я могу исправить свой код, чтобы паук снова заработал?
Может кто-нибудь объяснить, что я делаю не так с правилами
Я хотел бы также исключить response.xpath ("// div [содержит (@ класс, 'product-sidebar__products')]")
Если этот «anderen kochten ook» (на английском языке: «другие клиенты оба эти продукта») присутствует на странице сведений о продукте
https://www.ah.nl/producten/product/wi160917/ah-verse-pesto-groen здесь это присутствует
https://www.ah.nl/producten/product/wi220252/swiffer-vloerreiniger-navul-stofdoekjes здесь его нет
Я много чего пробовал, но не могу разобраться с правилами
class ahSpider(CrawlSpider):
name = 'ah'
allowed_domains = ['ah.nl'] # geen url neer zetten alleen domain name
start_urls = ['https://www.ah.nl']
# "anderen kochten ook" "in English: “other customers both these products"
# response.xpath("//div[contains(@class,'product-sidebar__products')]")
rules = [
Rule(LinkExtractor(allow=('/bonus'), deny=('/allerhandebox/', '/allerhande/', '/winkels/', '/acties/', '/klantenservice/', '/zakelijk/', '/bezorgbundel/', '/vakslager/')), follow=True),
Rule(LinkExtractor(allow=('/producten/product/[0-9]+/[0-9]+'),), callback='parse_items'),
]
#def parse(self, response):
def parse_items(self, response):
items = AhItem()
product_name = response.xpath("//span[contains(@class, 'line-clamp--active')]//text()").extract_first()
items['product_name'] = product_name
yield items