Scrapy не сканирует следующую страницу URL - PullRequest
0 голосов
/ 25 сентября 2018

Мой паук не сканирует страницу 2, но XPath возвращает правильную ссылку на следующую страницу, которая является абсолютной ссылкой на следующую страницу.

Вот мой код

from scrapy import Spider
from scrapy.http import Request, FormRequest



class MintSpiderSpider(Spider):

    name = 'Mint_spider'
    allowed_domains = ['example.com']
    start_urls = ['http://www.example.com/']

    def parse(self, response):
        urls =  response.xpath('//div[@class = "post-inner post-hover"]/h2/a/@href').extract()

        for url in urls:
            yield Request(url, callback=self.parse_lyrics)

        next_page_url = response.xpath('//li[@class="next right"]/a/@href').extract_first()
        if next_page_url:
            yield scrapy.Request(next_page_url, callback=self.parse)


    def parse_foo(self, response):
        info = response.xpath('//*[@class="songinfo"]/p/text()').extract()
        name =  response.xpath('//*[@id="lyric"]/h2/text()').extract()

        yield{
            'name' : name,
            'info': info
        }

1 Ответ

0 голосов
/ 25 сентября 2018

Проблема в том, что next_page_url - это список, и он должен быть URL-адресом в виде строки.Вам нужно использовать функцию extract_first() вместо extract() в next_page_url = response.xpath('//li[@class="next right"]/a/@href').extract().

ОБНОВЛЕНИЕ

Вам необходимо import scrapy, поскольку вы используете yield scrapy.Request(next_page_url, callback=self.parse)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...