Scrapy не получит весь текст из класса span - PullRequest
0 голосов
/ 26 февраля 2020

Я новичок в scrapy, но следовал учебному пособию и мог получить весь требуемый текст, кроме как только для этого тега:

Текст на сайте

Проверка это:

html

, поэтому тег CSS имеет значение «.review-date», и я сделал:

country_and_date = ответ. css ('. review-date :: text'). extract ()

Но я получаю только: "25 июня 2019" вместо весь текст"Проверено в Соединенных Штатах 25 июня 2019 года "

Может кто-нибудь объяснить мне, почему / помочь мне получить весь текст?

Кроме того, вот сайт: https://www.amazon.com/Acer-Display-Graphics-Keyboard-A515-43-R19L/product-reviews/B07RF1XD36/ref=cm_cr_getr_d_paging_btm_next_2? т.е. = UTF8 & reviewerType = all_reviews & pageNumber = 2 & filterByStar = five_star

РЕДАКТИРОВАТЬ:

def parse(self,response):
    items = amazon_tutorial_items_to_scrape() #var items will store amazon_tutorial_items_to_scrape instance


    product_name = response.css('.a-text-ellipsis .a-link-normal').css('::text').extract() #when having 2 tags, use ::text in the end, else, in the tag.
    country_and_date = response.css('.review-date::text').extract()

    rating_text = response.css('.review-rating').extract()
    rate =[] 
    for x in rating_text:
        extracting_stars = Selector(text=x).xpath('//span/text()').extract_first()
        rate.append(extracting_stars)
    title = response.css('.a-text-bold span::text').extract()
    name_reviewer = response.css('.a-profile-name::text').extract()
    badge = response.css('.c7y-badge-text::text').extract()
    review = response.css('.review-text-content span::text').extract()

    items['product_name'] = product_name
    items['country_and_date'] = country_and_date
    items['rate'] = rate
    items['title'] = title
    items['name_reviewer'] = name_reviewer
    items['badge'] = badge 
    items['review'] = review

    print('******************************************')

    #writing

    yield items

    #Next page scraping
    next_page = response.css('li.a-last > a::attr(href)').extract_first() #extracting all the link
    if next_page:
        yield scrapy.Request(urljoin(response.url, next_page),callback=self.parse)

1 Ответ

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

спасибо за ваш ответ. Если я открою веб-сайт по вашей ссылке, текст, включающий «Проверено в Соединенных Штатах», НЕ будет на сайте. screenshot

Я не авторизован на веб-сайте Amazon. Может быть, местоположение не отображается, когда вы не вошли в систему?

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