Ошибка очистки при следующих ссылках: AttributeError: у объекта 'HtmlResponse' нет атрибута follow_all - PullRequest
0 голосов
/ 05 марта 2020

Я всего лишь python новичок в python и scrapy и в настоящее время пытаюсь получить рейтинг для каждой комбинации язык / игра на https://www.twitchmetrics.net/channels/viewership

Однако я не могу получить скраб, чтобы перейти по ссылкам. Я всегда получаю объект 'HtmlResponse' не имеет атрибута follow_all '- ошибка.

    def parse(self, response):
    all_channels = response.xpath('//h5')
    language_page_links = response.xpath(
        '//div[@class="mb-4"][1]//a//@href').getall()

    for i, channel in enumerate(all_channels, start=1):
        il = ItemLoader(item=LeaderboardItem(), selector=channel)
        il.add_xpath('channel_id', './text()')
        il.add_value('rank_mostwatched_all_all', i)
        yield il.load_item()

    yield from response.follow_all(language_page_links, self.parse)

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

class AuthorSpider(scrapy.Spider):
name = 'author'

start_urls = ['http://quotes.toscrape.com/']

def parse(self, response):
    author_page_links = response.css('.author + a')
    yield from response.follow_all(author_page_links, self.parse_author)

    pagination_links = response.css('li.next a')
    yield from response.follow_all(pagination_links, self.parse)

def parse_author(self, response):
    def extract_with_css(query):
        return response.css(query).get(default='').strip()

    yield {
        'name': extract_with_css('h3.author-title::text'),
        'birthdate': extract_with_css('.author-born-date::text'),
        'bio': extract_with_css('.author-description::text'),
    }

Что мне здесь не хватает?

1 Ответ

1 голос
/ 05 марта 2020

Документация показывает, что follow_all - новый метод, доступный только в версии 2.0.

Возможно, вам придется обновить scrapy

 pip install --update scrapy
...