Я новичок в 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)