我正在尝试从网页上抓取评论计数器。代码如下。

当我要求它打印letters时,输出为空列表。为什么会这样呢?

import urllib2
from bs4 import BeautifulSoup
r2 = urllib2.urlopen("http://www.ign.com/articles/2016/01/03/steam-surpasses-12-million-concurrent-users").read()

soup2 = BeautifulSoup(r2)
letters = soup2.find_all("div",class_="fyre-comment-count")
print letters

最佳答案

该列表为空,因为该页面上没有评论。 div#livefyre-comment为空,并且div.fyre-comment-count不存在。

在页面标题中,有一个可疑的script标记,用于从http://cdn.livefyre.com/Livefyre.js中提取JavaScript。我不知道Livefyre是什么,但我认为它会将注释从数据库中的某个地方吸走,并将其插入div#livefyre-comment或其周围的div.article-comments中。脚本完成后,div.fyre-comment-count大概也会出现在DOM中的某个位置。

这种设计决策在网站上越来越普遍。要查看网页的真实外观,请关闭JavaScript和Cookie进行浏览(并为从未想到过的流氓行为可能发生的站点偶尔出现“ 500 Internal Server Error”做准备)。

我对屏幕抓取的了解不足,无法告诉您从这里去哪里。您可能可以拼凑一个URL,以直接从Livefyre获取评论(及其评论数)。首先,请仔细阅读它们提供的JavaScript函数以及data-settingsdiv#livefyre-comment属性,该属性似乎是一个包含相关参数的JSON字典。

关于python - 抓取网页的评论部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34582619/

10-12 22:48