3

我一直在尝试在以下网站页面上使用 Beautiful Soup 来抓取 Facebook 评论。

import BeautifulSoup
import urllib2
import re

url = 'http://techcrunch.com/2012/05/15/facebook-lightbox/'

fd = urllib2.urlopen(url)

soup = BeautifulSoup.BeautifulSoup(fd)

fb_comment = soup("div", {"class":"postText"}).find(text=True)

print fb_comment

输出是一个空集。但是,我可以清楚地看到 facebook 评论位于 techcrunch 网站的检查元素中的上述标签内(我对 Python 并不陌生,想知道这种方法是否正确以及我哪里出错了?)

4

3 回答 3

1

就像 Christopher 和 Thiefmaster:这都是因为 javascript。

但是,如果您真的需要该信息,您仍然可以通过http://seleniumhq.org上的 Selenium 检索它,然后在此输出上使用 beautifulsoup。

于 2013-01-19T18:52:52.127 回答
0

Facebook 评论是使用 AJAX 动态加载的。您可以抓取原始页面以检索此内容:

<fb:comments href="http://techcrunch.com/2012/05/15/facebook-lightbox/" num_posts="25" width="630"></fb:comments>

之后,您需要向某些 Facebook API 发送请求,该 API 将为您提供该标签中 URL 的评论。

于 2013-01-19T13:45:20.860 回答
0

您正在查找的页面部分不包含在源文件中。使用浏览器,您可以通过打开页面源来自己查看。

在将文档传递给 BeautifulSoup 之前,您需要使用pywebkitgtk之类的东西来执行 javascript

于 2013-01-19T13:46:00.083 回答