wget用于抓取Facebook个人资料/朋友页面
我正在尝试使用“wget”获取Facebook用户的个人资料页面,但不断收到一个名为“browser.php”的非个人资料页面,该页面与该特定用户无关。个人资料页面的URL,因为我在浏览器中看到恰好是以下格式:wget用于抓取Facebook个人资料/朋友页面
http://www.facebook.com/user-name
,这就是我一直在使用什么样的参数wget命令:
wget的http://www.facebook.com/user-name
我也有兴趣在使用wget获取一个用户的好友名单,但即使是给我同样无益结果(‘browser.php’):
wget的http://www.facebook.com/user-name?sk=friends&v=friends
可能有人好心劝我,我做错了什么吗?换句话说,我错过了wget命令的一些关键选项,还是wget根本不适合这样的场景?
任何帮助将不胜感激。
要向此查询添加上下文,我需要弄清楚如何使用wget从Facebook获取这些页面,因为这样可以帮助我编写脚本/程序从HTML源代码中查找好友的配置文件URL,然后看看他们的其他关键字等。我基本上希望这可以帮助我进行某种有选择性的爬行(当然还有Facebook的许可)我没有连接的人。
首先,Facebook可能创建了某些用户代理(例如wget)无法抓取页面的情况。因此,他们重定向某些用户代理哟不同的页面,可能会说“您的浏览器不受支持”他们这样做是为了防止人们完全做你正在做的事情。但是,您可以使用wget的-U
参数告诉wget将自己标识为不同的代理程序(请参阅wget手册页)。例如其次,Facebook的隐私设置很少允许您阅读任何/很多信息,除非您以用户身份登录,并且可能只是作为您试图抓取的配置文件的朋友的用户。
最后,您需要使用Facebook API来抓取并从Facebook提取信息 - 如果您尝试以任何其他方式获取信息,您可能违反了可接受使用策略。
我不知道为什么你想使用wget ..facebook提供了一个很好的API。
wget --user-agent=Firefox http://www.facebook.com/markzuckerberg
将公共可用内容保存到文件中。
你应该考虑使用他们的API。
谢谢克里希。不幸的是,这是行不通的,因为它给了我一个文件(其中文件名是用户名),没有信息,如果我通过更改用户代理向Facebook“撒谎”不会Facebook实际上对象时寻求真正的爬行许可(因为这是我的最终目标)? 我想使用wget,因为我什么都不知道。其他任何建议都会非常有帮助 - 我正在寻找可以在脚本或程序中使用的任何内容。 – rogerchucker
Krish,Facebook API需要每个用户的访问令牌,这些用户的配置文件正在尝试提取。在不引人注目的数据收集中这是不切实际的。 – rogerchucker
如果你想保存登录页面,您可以用Firefox登录在“记住我的登录”选中,然后这些Cookie复制到文件中,并与cookiejar选择使用它们。您仍然会拥有相当多的动态脚本加载内容,WGET无法保存。
有很多方法来剥皮这只猫。如果您需要提取特定项目,请查看API。如果您只是想将网页快照存档为网页浏览器,请尝试使用CutyCapt。这很像wget,只是它将整个文档解析为网页浏览器并存储页面的图像。
您可以轻松地重复使用的Firefox cookie来登录:https://askubuntu.com/questions/161778/how-do-i-use-wget-curl-to-download-from-a-site-i-am-logged-into
谁能看到你的好友列表是可配置的,所以如果有人只是它配置给朋友,你不能提取信息。
此外,我建议使用移动网站,它使用的,而不是AJAX装载分页并具有更简单,更小的HTML:https://m.facebook.com/USER/friends?startindex=24
这里是(非常严格)刮条款:https://www.facebook.com/apps/site_scraping_tos_terms.php
如果一个人谁不在我的网络上发布她的朋友的名单,那么从Facebook的角度来看,它仍然是一个私人信息? – rogerchucker
我第一次考虑去Facebook API路线(特别是图形API),但好像所有的朋友信息都需要访问令牌,我想这样做不显眼。即使这是严格的学术研究,这是否会违反Facebook的政策? – rogerchucker
通过Facebook API的Facebook数据的一般规则很简单 - *如果您可以通过Facebook API获取,那么它是您已获准访问的数据或公开的数据。* 大多数Facebook API将允许您向用户索取数据,API将返回您已查询的数据**和**您可以查看的数据。因此你在处理facebook数据时的应用程序应该被构建,以便它可以接受数据**和**没有数据被返回类似的请求。 – Soren