python - 使用 Python 从 Facebook 抓取数据

标签 python facebook web-scraping beautifulsoup mechanize

几天来我一直在尝试(未成功)从大约 500 个 Facebook URL 中抓取城市。然而,Facebook 以一种非常奇怪的方式处理其数据,我无法弄清楚幕后发生了什么,无法理解我需要做什么。

从本质上讲,问题在于 Facebook 显示的数据量会因登录者的不同以及帐户的隐私设置而异。例如,尝试在已登录 Facebook 的浏览器和未登录的浏览器中打开以下三个链接:

[出于隐私考虑删除链接]

如您所见,Facebook 在两种情况下都为第一个链接加载数据,但如果您已登录(任何帐户),则仅获取第二个链接的数据。第三个链接在您登录时显示城市,但在您未登录时仅显示其他信息。

这个问题非常严重(并且与 Python 相关)的原因是,当我尝试使用 Beautiful Soup 或 Mechanize 抓取页面时,我不知道如何让程序“假装”我已登录帐户。这意味着我可以轻松地从第一种类型的链接(少于 10 个)中获取数据,但我无法从第二种或第三种类型中获取城市。到目前为止,我已经尝试了很多解决方案,但收效甚微。

下面是一些示例代码,它适用于第一种类型,但不适用于其他类型:

import mechanize
import re
import csv

user_info = []

fb_url = 'http://www.facebook.com/100004210542493'
br = mechanize.Browser()
br.set_handle_robots(False)

br.open(fb_url)
all_html = br.response().get_data()
print all_html

city = re.search('fsl fwb fcb">(.+?)</a></div><div class="aboutSubtitle fsm fwn fcg', all_html).group(1)

user_info = [fb_url, city]
print user_info

我还有一个使用 Beautiful Soup 的版本。如果有人对如何解决这个问题有任何想法,我将非常感激。谢谢!

最佳答案

您应该考虑使用 facepy通过 Johannes Gorset .他做得很出色。我在为个人项目开发一个小型 Facebook 应用程序时使用了它。

关于python - 使用 Python 从 Facebook 抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19041827/

相关文章:

python - 与关联表的多对多关系的 SQLAlchemy 警告

python - 获取数据帧列中字典的所有键

python - 如何根据索引组合嵌套列表?

javascript - 无法像按钮一样动态加载 Facebook

facebook - 使用 CloudMade 和 Facebook iOs SDK 时出现重复符号 _OBJC_METACLASS_$_SBJSON

python - VPython 继承

facebook - PHP 中 Facebook Graph API 的扩展权限

python - Scrapy不抓取https?

python - 使用BeautifulSoup只考虑网页内容的某一部分

python - 无法从网页中获取 Twitter 链接