Facebook是美国的一个社交网络服务网站,至今注册用户已超越20亿,月活用户更是惊人的突破3亿。

这样庞大的一个社交类网站,每日产生的社交数据当然也是非常可观,而这些社交数据,更接近口语,所以是比较好的一些英文语料数据。

然而,面对这样好的一个语料来源,它的下载难度也是超越了我的预期。

起初,因为使用facebook需要FQ的原因,我们放弃了从app端解析数据的方式。

因为这种方式需要手机app端和电脑连接在同一个网络下,并且手机端需要设置代理为电脑ip。然而经过测试,这样设置以后手机端不能正常FQ,这个问题有待进一步解决。

除了app端,这边便打算通过网页端直接去获取数据。

分析发现,通过https://www.facebook.com/profile.php?id=5这种形式的链接可以直接跳转到用户的主页,https://www.facebook.com/ChrisHughes

主页下面有以下信息

点击左边框内的链接,可以获得以下语料数据,右边框内则是该用户的一些关联用户。

这样一来,我们便有了第一个版本的下载策略。

通过遍历用户id的方式,访问到用户的主页下,然后根据用户的一些关联信息获取一些名人和营销帐号下的帖子信息以及该用户关联的用户信息。

这样一来,就能形成一个循环下载,循环中我们能够不断的扩充自己的facebook用户数据和帖子数据。

于是,通过这种方式,我们编写好了初步的下载程序,实际一下载,傻眼了。

facebook会封ip,就是出现验证码来需要输入,类似以下这样的:

显然,这样的验证码,我们这边暂时还解决不了。

既然解决不了验证码,那只能选择放弃被封ip,启用新的ip方法。

这边估算是平均一个ip只能下载1Mb左右的语料数据,然后就会被封,这样一来,如果需要每天下载1g数据的话就需要1000多个ip。

虽然目前我们这边有代理ip库,但因为是免费的,所以稳定性和可用性都还是比较差的。

再加上Facebook需要FQ的缘故,经过测试,实际可用的代理ip只有不到5个,显然,这样肯定行不通。

经过讨论,这边想通过使用付费代理的方式来提高ip的可用性,想着付费的ip应该会好很多把。

然后,经过两天的查找,得到的回答几乎是一样的,能够FQ的ip是没有的。

好奇,自己这边使用的免费收集的代理都有能用的,收费的怎么会没有呢。

经过考虑,认为国外的ip应该是可以实现FQ的,但是估计实际的FQ可用率不太高。

于是这边购买了一些网站的代理ip来实际测试,发现果然如此,实际的可用率比我们这边的免费代理高的不多,也就维持在10个左右,但是稳定性确实比我们的高。

这样一来,每天的下载速度也就10Mb左右,这样肯定是不行的。

(备注:这里发现并不是贵的代理质量就比较好,测试发现http://www.66ip.cn/和http://www.daxiangdaili.com/这两家还是比较好用的,也比较便宜。当然这边测试的是能够用来FQ的ip,可能具体使用时需要具体分析把)

通过网页直接获取数据的方式行不通,因此,这种方式只能选择放弃。

因此,现在只剩下最后一种方式,通过facebook官方提供的api来获取。

这种方式其实之前也尝试过,但是发现api需要一些用户信息,而且只能看关注的用户信息,所以当时就没有继续深究下去。

但是现在一想,比起其他的方式一天只能获取10MB左右的数据,api的方式肯定会多一点(因为实在是没什么别的办法了)。

花了一天时间,好好的看了一下facebook的api,https://developers.facebook.com/docs/graph-api/reference/

找到了一些可用的api接口:

https://graph.facebook.com/v2.9/{用户id}/feed?access_token={开发者access_token}   获取用户发的帖子,通过此接口得到语料数据

https://graph.facebook.com/v2.9/{用户id}/likes?access_token={开发者access_token}   获取用户感兴趣的人,通过此接口得到关联用户

https://graph.facebook.com/v2.9/{用户id}/comments?access_token={开发者access_token}   获取用户帖子的评论,通过此接口得到具体某一个帖子的评论,也就是语料数据

想到的下载策略是:先找一个用户,然后通过关联用户接口获取第一批用户,再通过用户id循环获取用户的帖子和关联的用户即可实现下载。

因此这里的重点就是开发者access_token,这个可以通过注册开发者来获取,因此这里就不在赘述了。

以上,就是此次facebook下载的一些总结和记录。

Facebook下载总结的更多相关文章

  1. 微软、谷歌、亚马逊、Facebook等硅谷大厂91个开源软件盘点(附下载地址)

    开源软件中有大量专家构建的代码,大大节省了开发人员的时间和成本,热衷于开源的大厂们总是能够带给我们新的惊喜.2016年9月GitHub报告显示,GitHub已经有超过 520 万的用户和超 30 万的 ...

  2. PayPal高级工程总监:读完这100篇论文 就能成大数据高手(附论文下载)

    100 open source Big Data architecture papers for data professionals. 读完这100篇论文 就能成大数据高手 作者 白宁超 2016年 ...

  3. DarkTrack 4 Alien Version Released RAT 下载地址&视频教程

    不废话,点我下载. 官方论坛:https://forum.darktrack.net 作者脸书:https://www.facebook.com/darktrackrat E安全报道:https:// ...

  4. SDK接入(1)之Android Facebook SDK接入

    SDK接入(1)之Android Facebook SDK接入 由于游戏已上线,且处于维护阶段,所以有空写写各种SDK接入过程和遇到的问题,也当作一种工作总结.SDK接入主流分为这么几类,登录.支付. ...

  5. 如何访问facebook (转)

    对于普通大众,访问facebook需要两个条件:1)使用代理 2)翻译网页内容.本文将介绍怎样安全高速地访问诸如facebook之类的国外网站,并提供相关软件下载. 工具/原料 chromeGAE软件 ...

  6. SDWebImage下载图片有时候无法成功显示出来

    之前用下面的方法现在图片,有时候会出现图片没有下载成功显示: - (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)p ...

  7. Facebook 网络模拟工具 ATC部署及使用

    废话引用: Facebook此前开源了增强网络流量控制工具 ATC,能利用WiFi网络模拟各种移动网络,测试智能手机和APP在不同国家地区和应用环境下的性能表现.ATC能够模拟2G.2.5G(Edge ...

  8. facebook darkforest围棋ai测试

    0.darkforest说明 darkforest是facebook田渊栋博士开发的深度学习围棋程序,2016的uec cup得了第二名(http://jsb.cs.uec.ac.jp/~igo/en ...

  9. 浅谈 facebook .net sdk 应用

    今天看了一篇非常好的文章,就放在这里与大家分享一下,顺便也给自己留一份.这段时间一直在学习MVC,另外如果大家有什么好的建议或者学习的地方,也请告知一下,谢谢. 这篇主要介绍如何应用facebook ...

随机推荐

  1. 三 概要模式 3) MR计数器计数 。无 reduce 计数

    计数器模式讲解:         先讲一下,就是说只用 Map 阶段  不需要 Reduce . 也就是说去掉了中间输出,而是Map 直接输出结果.大大提高了 MR 的效率且节省了 MR 中间输出读入 ...

  2. Fragmen直接来回切换deno

    思路: 第一步.建立一个activity.用来管理fragment. 第二步'获取fragmentManger 和fragmentTraction. private FragmentManager f ...

  3. HDOJ 5087 Revenge of LIS II DP

    DP的时候记录下能否够从两个位置转移过来. ... Revenge of LIS II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: ...

  4. hibernate 或jpa 中使用 AliasToBeanResultTransformer 自定义类型转换ResultTransformer 下划线转驼峰

    jpa中使用 sql查询时,返回结果直接转为实体bean的实现, 需要自定义一个ResultTransformer,如下, import java.util.Arrays; import org.ap ...

  5. 1264: [AHOI2006]基因匹配Match(动态规划神题)

    1264: [AHOI2006]基因匹配Match 题目:传送门 简要题意: 给出两个序列.每个序列都由n种不同的数字组成,保证每个序列种每种数字都会出现5次(位置不一定一样),也就是序列长度为5*n ...

  6. xss  多分类 优选 贝叶斯、逻辑回归、决策树

    import re import numpy as np from sklearn import cross_validation from sklearn import datasets from ...

  7. c# 枚举enum

    1 定义枚举 enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; 默认情况下,枚举中的每个元素的 ...

  8. 函数响应式编程(FRP)从入门到”放弃”——基础概念篇

    前言 研究ReactiveCocoa一段时间了,是时候总结一下学到的一些知识了. 一.函数响应式编程 说道函数响应式编程,就不得不提到函数式编程,它们俩到底有什么关系呢?今天我们就详细的解析一下他们的 ...

  9. Linux cp 复制命令

    Linux 的cp命令 功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若 ...

  10. WLAN 基础架构功能

    WLAN 基础架构功能 Android WLAN 框架可帮助用户连接到优质 WLAN 网络(在有可用 WLAN 网络且需要连接到这类网络的情况下).Android 可通过多种方式来实现这一点: 打开网 ...