首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python从Facebook抓取数据

问用Python从Facebook抓取数据
EN

Stack Overflow用户
提问于 2013-09-27 02:37:18
回答 4查看 52.6K关注 0票数 12

几天来,我一直试图从大约500个Facebook URL中筛选出一些城市(但没有成功)。然而,Facebook以一种非常奇怪的方式处理数据,我无法弄清楚引擎盖下发生了什么事情来理解我需要做什么。

本质上,问题在于Facebook显示的数据量很大,取决于谁登录,以及帐户的隐私设置是什么。例如,尝试打开以下三个链接,分别在登录到Facebook的浏览器中和不在的浏览器中打开:

由于隐私问题而修改了LINKS

如您所见,Facebook在第一个链接的两种情况下都加载数据,但只有在登录(登录到任何帐户)时才能获得第二个链接的数据。第三个链接在登录时显示“城市”,但在未登录时只显示其他信息。

这个问题非常严重(与Python相关)的原因是,当我试图用“漂亮汤”或“机械”刮页时,我不知道如何让程序“假装”我已经登录了一个帐户。这意味着我可以轻松地从第一种类型的链接(其中不到10种链接)获取数据,但是我不能让城市脱离第二种或第三种类型。到目前为止,我已经尝试了许多解决方案,但收效甚微。

下面是一些为第一种类型正确工作的示例代码,但对其他类型则不正确:

代码语言:javascript
复制
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

我也有一个版本,使用美丽汤。如果有人对如何解决这个问题有任何想法,我将非常感激。谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-27 02:54:47

正确的方法是使用facebook。由于各种商业、安全和隐私方面的原因,他们想尽办法让抓取数据变得棘手。

如果你坚持刮擦,我会尝试首先登录,使用机械提交表单。我从来没有尝试过在facebook上这么做,但是很多网站都更容易解析针对m.site.com手机用户的版本。

票数 14
EN

Stack Overflow用户

发布于 2013-09-27 02:56:43

您应该研究如何通过facepy使用Johannes Gorset。他干得很出色。当我为一个个人项目开发一个小型Facebook应用程序时,我就使用了它。

票数 15
EN

Stack Overflow用户

发布于 2016-06-13 16:46:09

我认为从facebook抓取数据是非法的。它是在使用facebook的条件下存在的。每个活动都会注册到您的登录详细信息,即使当您使用一个机器人刮刮。如果被发现,他们可以禁止你一辈子使用facebook。如果你可能构成的任何资产都有潜在的威胁,他们会进一步惩罚你。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19041827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档