几天来,我一直试图从大约500个Facebook URL中筛选出一些城市(但没有成功)。然而,Facebook以一种非常奇怪的方式处理数据,我无法弄清楚引擎盖下发生了什么事情来理解我需要做什么。
本质上,问题在于Facebook显示的数据量很大,取决于谁登录,以及帐户的隐私设置是什么。例如,尝试打开以下三个链接,分别在登录到Facebook的浏览器中和不在的浏览器中打开:
由于隐私问题而修改了LINKS
如您所见,Facebook在第一个链接的两种情况下都加载数据,但只有在登录(登录到任何帐户)时才能获得第二个链接的数据。第三个链接在登录时显示“城市”,但在未登录时只显示其他信息。
这个问题非常严重(与Python相关)的原因是,当我试图用“漂亮汤”或“机械”刮页时,我不知道如何让程序“假装”我已经登录了一个帐户。这意味着我可以轻松地从第一种类型的链接(其中不到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我也有一个版本,使用美丽汤。如果有人对如何解决这个问题有任何想法,我将非常感激。谢谢!
发布于 2013-09-27 02:54:47
正确的方法是使用facebook。由于各种商业、安全和隐私方面的原因,他们想尽办法让抓取数据变得棘手。
如果你坚持刮擦,我会尝试首先登录,使用机械提交表单。我从来没有尝试过在facebook上这么做,但是很多网站都更容易解析针对m.site.com手机用户的版本。
发布于 2013-09-27 02:56:43
您应该研究如何通过facepy使用Johannes Gorset。他干得很出色。当我为一个个人项目开发一个小型Facebook应用程序时,我就使用了它。
发布于 2016-06-13 16:46:09
我认为从facebook抓取数据是非法的。它是在使用facebook的条件下存在的。每个活动都会注册到您的登录详细信息,即使当您使用一个机器人刮刮。如果被发现,他们可以禁止你一辈子使用facebook。如果你可能构成的任何资产都有潜在的威胁,他们会进一步惩罚你。
https://stackoverflow.com/questions/19041827
复制相似问题