Scrapy; Попытка скрести следующие страницы в Амазонке - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь почистить все отзывы об этом продукте Amazon Ссылка здесь . Однако он отображает только результат первой страницы.

Снимок результата первой страницы

ниже - мой код в рамках scrapy.

import scrapy
from..items import AmazonItem

class SpideramazonSpider(scrapy.Spider):
name = 'spideramazon'
allowed_domains = ['amazon.co.uk, amazon.com']
start_urls = ['https://www.amazon.com/Apple-MacBook-MC700LL-13-3-Inch-VERSION/product-reviews/B002QQ8H8I/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews']


def parse(self, response):
    items= AmazonItem()
    getpage = response.css('div[data-hook=review]')
    for get_data in getpage:
        id = get_data.xpath('@id').extract()
        title = get_data.xpath('.//a[@data-hook="review-title"]/span/text()').extract()
        author_name = get_data.css('span.a-profile-name::text').extract()
        review_text = '\n'.join(get_data.xpath('.//span[@data-hook="review-body"]/span/text()').extract())
        stars = self.extract_stars(get_data)
        review_date = get_data.css('span.review-date::text').extract_first()

        items['id'] = id
        items['title'] = title
        items['author_name'] = author_name
        items['review_text'] = review_text
        items['stars'] = stars
        items['review_date'] = review_date
        yield items
    next_page = response.css('li.a-last a::attr(href)').get()
    if next_page is not None:
        next_page=response.urljoin(next_page)
        yield response.follow(url=next_page, callback=self.parse)

def extract_stars(self, get_data):
    stars = None
    star_classes = get_data.css('i.a-icon-star::attr(class)').extract_first().split(' ')
    for i in star_classes:
        if i.startswith('a-star-'):
            stars = int(i[7:])
            break
    return stars

Я очень новичок в области терапии, любая помощь или руководство приветствуется!

1 Ответ

0 голосов
/ 13 апреля 2020

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

Подробнее об этой технике вы можете узнать здесь: https://medium.com/quick-code/python-scrapy-tutorial-for-beginners-03-how-to-go-to-the-next-page-d29827e0544b

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