首页 > 解决方案 > 抓取 google play 评论

问题描述

我是编程新手,最近尝试使用以下程序使用 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)    

输出是一个空列表。

标签: pythonweb-scrapingbeautifulsoupurllib

解决方案


jscontroller和值在不同的classURL 中将不一致。你可以尝试类似的东西

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

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

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

例如

在此处输入图像描述


推荐阅读