我正在尝试从网页上抓取评论计数器。代码如下。
当我要求它打印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-settings
的div#livefyre-comment
属性,该属性似乎是一个包含相关参数的JSON字典。
关于python - 抓取网页的评论部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34582619/