簡體   English   中英

無法從多個頁面中抓取評論,並且只能在(新行距)間距之前抓取評論

[英]Can't scrape reviews from multiple pages and it's only scraping reviews before (new line spacing) spacing

提前感謝您的寶貴時間。 我非常感謝。

我正在嘗試從亞馬遜上抓取產品評論、評級和其他信息。 下面是相同的代碼。 我得到的問題是:

  • 第一頁有 10 條評論。
  • 在爬取的數據中,所有評論都來自這 10 位客戶。
  • 10 行評論數據,然后是一個空白行,然后是這 10 行,依此類推。 以同樣的方式一共196行。
  • 此外,如果客戶在任何評論中使用“ENTER”作為間距,則評論中只有間距之前的文本。 如下圖黃色突出顯示的那樣。

鏈接到刮 - https://www.amazon.com/product-reviews/B01DFKC2SO/ref=cm_cr_arp_d_viewpnt_lft?pageNumber=

我的代碼:


import scrapy
 
 
class ReviewspiderSpider(scrapy.Spider):
 
    name = 'reviewspider'
 
    allowed_domains = ["www.amazon.com"]
    start_urls = [
        'https://www.amazon.com/product-reviews/B01DFKC2SO/ref=cm_cr_arp_d_viewpnt_lft?pageNumber=']
 
    def parse(self, response):
        for review in response.xpath("//div[@id='cm_cr-review_list']/div"):
            yield {
                'Name': review.xpath('.//span[@class="a-profile-name"]/text()').get(),
                'Title': review.xpath('.//a[@data-hook="review-title"]/span/text()').get(),
                'Rating': review.xpath('.//span[@class="a-icon-alt"]/text()').get(),
                'Review': review.xpath('.//span[@data-hook="review-body"]/span/text()').get()
            }
 
        next_page = response.xpath(
            "//a[text()='Next page']").get()
        if next_page:
            yield response.follow(url=next_page, callback=self.parse)

Output:

在此處輸入圖像描述

您忘記了 select 的href:

next_page = response.xpath("//a[text()='Next page']/@href").get()

您將整個標簽加入到 response.url,而不是 href。

至於為什么要刪除文本的問題。 文本沒有被刪除,你只是沒有得到它,你只是得到了文本的第一部分。 text()返回一個純文本,如果有
它拆分文本。

關於如何修復它有兩種選擇。 首先是在 xpath 中使用字符串 function 作為跨度選擇器:

review.xpath('string(.//span[@data-hook="review-body"]/span)').get()

但我不推薦它,因為它只刪除選擇器中的標簽。 所以文本之間將沒有任何分隔符(例如“我有兩個。我有這么多......”“。”和“我”之間沒有任何分隔符)。

我建議使用getall方法並獲取標簽的所有純文本,然后將它們與您認為合適的分隔符簡單地連接起來。

'\n'.join(review.xpath('.//span[@data-hook="review-body"]/span/text()').getall())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM