Как я могу перемещаться между ссылками с Scrapy? - PullRequest
0 голосов
/ 04 марта 2019

Я хочу получить данные с веб-сайта, но чтобы получить данные, мне нужно получить доступ к ссылке с домашней страницы, затем получить данные, после чего мне нужно вернуться на домашнюю страницу и затем повторить цикл, где я получаю доступ к ссылкеполучить данные и затем вернуться.

Я знаю, как получить доступ к ссылке и получить данные, но я хотел бы знать, как я могу получить доступ к другим ссылкам и вернуться туда, где я был после доступапервая ссылка.

Вот то, что я сейчас кодирую:

# -*- coding: utf-8 -*-
import scrapy


class SsFamilleSpider(scrapy.Spider):
    name = 'ss_famille'
    allowed_domains = ['rexel.fr']
    start_urls = ['https://www.rexel.fr/frx/browse/category']

def parse(self, response):
    ssfamille = response.xpath("//div[@class='MML2 subDropDownMenu default browse-products-menu categoryList-container']//li//a/@href").get()
    yield {'ssfamille': ssfamille}
    test = response.xpath("//div[@id='facet_category']//div[@class='allFacetValues']//li//label[@class=' facet_leftCheckBox-label']//span/text()").extract()
    yield {'test': test}
    next_page = response.xpath("//div[@class='MML2 subDropDownMenu default browse-products-menu categoryList-container']//li//a/@href").get()
    if next_page is not None:
        yield response.follow(next_page, callback = self.parse)

1 Ответ

0 голосов
/ 04 марта 2019

Вам не нужно переходить назад и вперед между страницами, чтобы переходить по каждой ссылке на главной странице.Вместо этого выберите и выдайте все ссылки на домашнюю страницу.При выборе нескольких ссылок вам нужно использовать getall(), чтобы получить все совпадения.get() возвращает только первое совпадение.Затем вам нужно перебрать результаты:

next_pages = response.xpath("//div[@class='MML2 subDropDownMenu default browse-products-menu categoryList-container']//li//a/@href").getall()
for next_page in next_pages:
    yield response.follow(next_page, callback = self.parse)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...