Как сделать так, чтобы scrapy перебирал архив с помощью URL? - PullRequest
1 голос
/ 08 июля 2019

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

Первая часть функции синтаксического анализа перебирает hrefs на странице архива для очистки страниц с использованием функции parse_art.Вторая часть состоит в том, чтобы найти следующую страницу в архиве и перейти к этой странице, чтобы продолжить сканирование.

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

Запуск scrapy на Python 3.7.

import scrapy
url_number = 1

class SpiderOne(scrapy.Spider):
    name = 'spider1'
    start_urls = ["http://www.page2bscraped.com/archive?page=%d" % url_number]

    #Parses over the archive page
    def parse(self, response):
        global url_number
        for href in response.xpath(".//a/@href"):
            yield response.follow(href, self.parse_art)

        for href in response.xpath(start_url):
            yield response.follow(start_url, self.parse)
            url_number += 1

    #Parses page contents                              
    def parse_art(self, response):
    #code goes here

Я пытаюсь сделать так, чтобы паук сканировал архив, используя URL и просто добавляя 1 к текущему номеру архива, а не полагаясь на (ненадежную) «Следующая страница»Xpath.

1 Ответ

0 голосов
/ 08 июля 2019

Изменение значения url_number не может изменить значение в url.

Вы должны снова сгенерировать полный URL

def parse(self, response):
    global url_number

    for href in response.xpath(".//a/@href"):
        yield response.follow(href, self.parse_art)

    url_number += 1
    url = "http://www.page2bscraped.com/archive?page=%d" % url_number

    yield response.follow(url, self.parse)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...