Как установить правило следующей страницы с CrawlSpider? - PullRequest
0 голосов
/ 07 февраля 2020

Я отправляю адрес электронной почты с веб-сайта. чтобы сделать это, мне нужно извлечь каждую ссылку, которая есть в списке, а затем на этой странице извлечения я извлеку адрес электронной почты. Проблема в том, что кнопка на следующей странице содержит до 50 символов, но если я изменяю URL с помощью sla sh и введите 51. это также go новая страница. Я хочу использовать для l oop для ссылки на следующую страницу. В качестве примера я буду использовать для l oop от 1 до 999, это обновит URL следующей страницы. ниже мой code.it работает нормально, пока доступна кнопка next_page.

   # -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule


class BestMoviesSpider(CrawlSpider):
    name = 'best_movies'
    allowed_domains = ['dastelefonbuch.de']

    user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'

    def start_requests(self):
        yield scrapy.Request(url='https://www.dastelefonbuch.de/Suche/Textilien%20Gmbh',
                             headers={
                                 'User-Agent': self.user_agent
                             })

    rules = (
        Rule(LinkExtractor(
            restrict_xpaths="//a[@class=' name']"),
            callback='parse_item', follow=True,
            process_request='set_user_agent'),
        Rule(LinkExtractor(

            restrict_xpaths="//a[@class='nextLink next'][2]"), follow=True,
            process_request='set_user_agent')
    )

    def set_user_agent(self, request):
        request.headers['User-Agent'] = self.user_agent
        return request

    def parse_item(self, response):
        yield {
            'email': response.xpath(
                "//a[starts-with(@href,'mailto')]/@href").get(),

        }

1 Ответ

0 голосов
/ 17 февраля 2020

Проверьте ваш URL в функции start_requests. Это не правильно. Я думаю, что вы имели в виду: "https://www.dastelefonbuch.de/Suche/Textilien"

...