【问题标题】:Scraping google play reviews抓取 google play 评论
【发布时间】:2020-08-01 18:44:19
【问题描述】:

我是编程新手,最近尝试使用以下程序使用 python 抓取 google play 评论:

from bs4 import BeautifulSoup
import urllib.request

url = input("Enter URL: ")
open_url = urllib.request.urlopen(url)

soup = BeautifulSoup(open_url, "html.parser")

reviews = []
for i in soup.find_all("div", {"jscontroller" : "X"}, {"class" : "X"}):
    per_review = i.find("X")
    reviews.append(per_review)

print(reviews)  

问题出在这部分:

for i in soup.find_all("div", {"jscontroller" : "X"}, {"class" : "X"}):
    per_review = i.find("X")
    reviews.append(per_review) 

我尝试了许多父节点和包含评论的当前节点,但输出始终是一个空列表。有人可以演示如何实现我的意图吗?谢谢。

编辑

例如,如果我使用带有以下参数的Super Mario Run 的 URL:

reviews = []
for i in soup.find_all("div", {"jscontroller" : "LVJlx"}, {"class" : "UD7Dzf"}):
    per_review = i.find("span")
    reviews.append(per_review)

print(reviews)    

输出是一个空列表。

【问题讨论】:

  • 您能提供一个示例网址吗?
  • 我在@NomadMonad 上面添加了一个

标签: python web-scraping beautifulsoup urllib


【解决方案1】:

jscontrollerclass 的值在不同的 URL 中将不一致。您可以尝试类似

soup.find_all('div', {'jscontroller': True}) 

但这不会为您提供所有评论,因为它们是在您向下滚动页面时动态添加的。

这意味着您需要使用实际浏览器抓取页面,或者您可以尝试使用开发者工具对 API 调用进行逆向工程。

例如

【讨论】:

  • 我尝试在超级马里奥运行中实现这一点,但生成的输出是游戏描述,而不是评论。 @NomadMonad
猜你喜欢
  • 2015-07-02
  • 1970-01-01
  • 2022-10-16
  • 1970-01-01
  • 2019-05-08
  • 2023-02-24
  • 2018-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多