我正在使用BeautifulSoup
从metacritic中抓取游戏数据。我试图获得每个评论者的分数和文本。我以为一切都很顺利,但当我得到回复时,我看到了这样的东西:
class="c-siteReviewPlaceholder_header"
字符串
该网站在其类中没有占位符这个词。我知道我需要针对特定的类:
class_="c-pageProductReviews_row"
型
这就是我的代码看起来的样子:
import requests
from bs4 import BeautifulSoup
URL = 'https://www.metacritic.com/game/alien-isolation/critic-reviews/?
platform=playstation-4'
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) '\
'AppleWebKit/537.36 (KHTML, like Gecko) '\
'Chrome/75.0.3770.80 Safari/537.36'}
critic_review_page = requests.get(URL, headers=headers)
soup = BeautifulSoup(critic_review_page.content, "html.parser")
critic_review_rows = soup.find_all("div", class_="c-pageProductReviews_row")
print(critic_review_rows)
型
当我打印critic_review_rows
时,我看到很多类都有占位符这个词。我不知道是Metacritic不让我抓取网站还是怎么回事。就好像我抓取数据的时候数据还没有加载一样。
2条答案
按热度按时间c3frrgcw1#
这里的主要问题是,内容是由
javascript
动态呈现的,requests
无法处理,因为它不像浏览器那样工作,只处理第一个静态响应状态。初始状态存储在页面源末尾的脚本中,因此您可以提取它,但更好的方法是使用调用的API:
个字符
ufj5ltwl2#
您看到的数据是在页面上的
<script>
元素中的形式JavaScript。要解析有关评论的一些信息,您可以使用例如:字符串
打印:
型