如何使用Scrapy爬取Google Play应用程序的评论?

3
我编写了这个爬虫来从Google Play上抓取应用程序评论。我在部分方面取得了成功。我只能提取名称、日期和评论。
我的问题:
  • 如何获取所有的评论,因为我只得到了41条。
  • 如何从<div>中获取评级?
import scrapy
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.selector import Selector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from urlparse import urljoin


class CompItem(scrapy.Item):
    rating = scrapy.Field()
    data = scrapy.Field()
    name = scrapy.Field()
    date = scrapy.Field()
  

class criticspider(CrawlSpider):
    name = "gaana"
    allowed_domains = ["play.google.com"]
    start_urls = ["https://play.google.com/store/apps/details?id=com.gaana&hl=en"]
    # rules = (
    # Rule(
        # SgmlLinkExtractor(allow=('search=jabong&page=1/+',)),
        # callback="parse_start_url",
        # follow=True),
    # )

def parse(self, response):
    sites = response.xpath('//div[@class="single-review"]')
    items = []

    for site in sites:
        item = CompItem()
        item['data'] = site.xpath('.//div[@class="review-body"]/text()').extract()
        item['name'] = site.xpath('.//div/div/span[@class="author-name"]/a/text()').extract()[0]
        item['date'] = site.xpath('.//span[@class="review-date"]/text()').extract()[0]
        item['rating'] = site.xpath('div[@class="review-info-star-rating"]/aria-label/text()').extract()
        
        items.append(item)
    return items

@JonathonReinhart 对不起,我对此一无所知! - John Dene
我只是在抓取它们以检查是否可以抓取?它们也没有提供任何API! - John Dene
3
你永远不知道好的数据可以被用来做什么。#冷静点兄弟 - John Dene
2
我认为有很多企业是建立在这个基础上的。像Sensor Tower、Mobile Action这样的评论聚合网站...你认为它们是如何获取数据的?它们一定只是简单地爬取网站。 - user1406716
2
@user1406716 确切地。 - John Dene
显示剩余3条评论
2个回答

0
你可以试试这个:
item['rating'] = site.xpath('.//div[@class="tiny-star star-rating-non-editable-container"]/@aria-label').extract()

0

你有

 item['rating'] = site.xpath('div[@class="review-info-star-rating"]/aria-label/text()').extract()

难道不应该是这样吗:

item['rating'] = site.xpath('.//div[@class="review-info-star-rating"]/aria-label/text()').extract()

不确定会不会有效,但是试一下吧 :)


你具体改了什么? - John Dene
1
在 div 前面添加 ".//" :) - Inês Martins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接