如何用Python抓取Facebook

您是否有兴趣从Facebook抓取用户资料或任何用户生成的内容,如帖子、评论、图像甚至视频?那么现在就来看看如何抓取他们,看看市场上最好的Facebook信息搜集工具。

Facebook是一个庞大的用户生成内容数据库。如果你知道自己在做什么,Facebook的数据就可以用来更好地了解你的受众,从而获得商业和政治利益。这一点可以从Cambridge Analytica如何使用用户的个人资料数据和生成的帖子来创建用户心理资料,以达到宣传的目的中看出。研究人员可以利用用户的帖子或群贴和评论进行情感分析,发现一个用户或一群用户的意图。问题是,你可以用Facebook上的数据做很多事情。

然而,获得所需的数据是一个问题。Facebook提供了一个用于收集用户档案和用户生成内容的API,但事实是,它具有很大的局限性,你不能将收集到的数据用于你需要的数据。您可以使用的唯一选项是使用通常称为Facebook scraper的Facebook数据抓取工具来抓取所需的数据。如果你有编程技能,你可以自己开发,如果你没有,你必须使用市场上已经制作好的工具。

在推荐最好的工具和如何抓取Facebook之前,让我们先来了解一下抓取Facebook的概况。


Facebook抓取-概述

Facebook不是你预算有限的常规网站。作为一家公司,Facebook拥有庞大的预算,并且拥有数千名员工,他们中的许多人都致力于在自己的平台上防止垃圾邮件。事实是,抓取Facebook并不是一件容易的事情,很多web抓取者在多次失败后放弃了抓取Facebook的想法。这是因为Facebook有一个非常强大的反机器人系统,这不仅仅是IP追踪。每当从Facebook平台上收集到大量用户数据时,它就会遭到用户的强烈反对。其中最大的是脸书剑桥分析数据。

由于损失和反弹,Facebook已经加强了它的反机器人系统,以防止抓取器和爬虫访问其网站,因此,刮脸书在一个合理的规模是一个困难的任务,将花费你很多钱。即使成功了,你也有可能被Facebook的法律团队狠狠地揍一顿——这可能意味着你要花一大笔钱去坐牢,这取决于你使用收集的数据的目的。即使存在这些风险,企业和研究人员仍在悄无声地搜索Facebook。如果你也想参与到这篇文章中来,请继续阅读。

阅读更多,安全创建多个Facebook帐户的提示


如何使用Python、Requests和BeautifulSoup来抓取Facebook

我在上面已经说过,抓取Facebook不是一件容易的事情。通常,当你需要在一个合理的规模上抓取任何网站时,你需要在其他网站上使用代理来规避区块和验证码。但对于Facebook来说,如果你必须爬取它的内容,你还需要做更多的准备。首先,你需要知道Facebook网站很大程度上依赖于JavaScript。这就意味着请求和BeautifulSoup的组合不会有帮助,对吗?您可能会认为需要Selenium来呈现和执行JavaScript来提供帮助。

但事实是,虽然Selenium可以帮助您呈现JavaScript,但它可能会适得其反。这是因为Facebook使用JavaScript进行浏览器指纹识别和行为分析,有了它,他们可以判断请求是否来自机器人,而你的访问将在几次请求后被阻止。除非您能找到解决这个问题的方法(我认为您不能),否则您应该放弃使用Selenium,忘记JavaScript呈现。

那你怎么办呢?如果你在浏览器上禁用了JavaScript并尝试访问Facebook,登录后会弹出提示,告诉你Facebook在没有启用JavaScript的情况下无法正常工作。除了让他们的功能发挥作用,他们还需要它来跟踪你。然而,旧的Facebook移动网页版本(https://mobile.facebook.com)不需要JavaScript,因此,你可以从这个网站而不是网页版本的Facebook。

以下是用于从Facebook网上论坛抓取文本数据的Python代码。这是一个非常基本的代码,它不会刮擦图像,视频甚至帖子作者的姓名-只是文本。它还不包含代理的使用。它使用“请求”下载页面,并使用“ BeautifulSoup”进行解析。当然,对于一个合理的项目,您需要注意代理,分页和异常处理。

在运行下面的代码之前,请确保已安装Requests和BeautifulSoup。如果还没有,请使用点子

install requests

用于安装请求的命令 – and

pip install beautifulsoup4

安装BeautifulSoup。您可以将组的id更改为任何其他组,并且该组中的文本将被废弃。

import requests
from bs4 import BeautifulSoup


class FBGroupScraper:

    def __init__(self, group_id):
        self.group_id = group_id
        self.page_url = "https://mobile.facebook.com/groups/" + self.group_id
        self.page_content = ""

    def get_page_content(self):
        self.page_content = requests.get(self.page_url).text

    def parse(self):
        soup = BeautifulSoup(self.page_content, "html.parser")
        feed_container = soup.find(id="m_group_stories_container").find_all("p")
        for i in feed_container:
            print(i.text)

group_id = "1463546523692520"
d = FBGroupScraper(group_id)
d.get_page_content()
d.parse()

阅读更多:

  • 如何在Twitter上抓取推文
  • 如何抓取YouTube视频,评论
  • 如何从Instagram提取数据

最好的Facebook网络抓取工具

如果您自己无法开发可以逃避街区的Facebook抓取工具,那么使用已解决的方法是可行的方法。市场上有许多已经制成的Facebook刮板,可用于执行刮板任务。尽管有些是免费的,但我通常不建议人们使用它们,因为它们要么限制性强,要么就没有应有的效率。付费的Facebook抓取工具是最好的。这是因为开发商得到了经济上的补偿,因此,它以尽可能最佳的方式工作以保持刮板的功能。以下是市场上一些最好的Facebook刮板。


Octoparse

  • 定价:每月75美元起
  • 免费试用:有限制的14天免费试用
  • 数据输出格式: CSV,Excel,JSON,MySQL,SQLServer
  • 支持的平台:云,桌面

Octoparse可以说是当今市场上最好的web scraper之一。有了它,你几乎可以搜刮所有类型的网站,Facebook就是其中之一。该抓取工具甚至有可供使用的Facebook抓取模板,这使得您可以更容易地从Facebook抓取数据,而无需从头构建一个抓取配置文件。

章鱼屁股行动迅速,高效,可靠。它既可以作为基于云的平台,也可以作为可安装的桌面应用程序。Octoparse是付费的,但也有免费试用的选项。然而,你不能使用Facebook模板与他们的免费试用计划。


ScrapeStorm

  • 定价:每月49.99美元起
  • 免费试用:入门计划是免费的-有限制
  • 数据输出格式: TXT,CSV,Excel,JSON,MySQL,Google表格等。
  • 支持的平台:台式机

就像Octoparse一样,ScrapeStorm也不是专门的Facebook抓取工具。但是,当涉及从Facebook抓取数据时,ScrapeStorm已被证明是您现在可以在市场上使用的最好的Facebook抓取工具之一。该工具易于使用,并具有视觉指向和单击界面,可在要废弃的数据上训练该工具。

它非常适合抓取Facebook用户生成的数据,这是它的智能数据识别功能。ScrapeStorm是由前Google抓取工具小组建立的,因此,他们知道如何逃避Facebook和Google等大型网站所采用的反抓取技术。


Phantom Buster Facebook Group Extractor

  • 定价:每月30美元起–每天1小时起
  • 免费试用: 14天免费试用–每天10分钟
  • 数据输出格式: CSV,Excel,JSON
  • 支持的操作系统: Windows,Mac,Linux

Phantom Buster是一家开发自动化工具的公司,该工具可用于自动化社交媒体上的任务并从中抓取数据。Facebook Group Extractor是专门的Facebook抓取工具。它支持在Facebook社区和组中抓取用户生成的内容。

使用此工具,您可以抓取Facebook组成员的个人资料以及此类组中的帖子。就像上面的工具一样,它是一种付费工具。但是,Phantom Buster为新用户提供14天免费试用选项,以测试他们的服务,您实际上可以将其用于手头的任务。它是基于云的工具。


Proxycrawl Facebook抓取工具

  • 定价: 50,000积分的月费为29美元起
  • 免费试用:前1000个请求
  • 数据输出格式: JSON
  • 支持的平台:基于云–通过API访问

与上面的相比,Proxycrawl提供的Facebook抓取工具是一种独特的Facebook抓取工具。这是因为与上面的可安装软件或基于云的平台不同,此Facebook scraper是scraping API。

它用作RESTful API。这意味着您可以将其合并到您的代码中,并立即使用返回/废弃的数据(因为它是为开发人员构建的)。使用此工具,您只需发送HTTP请求,就可以从Facebook组中提取数据,包括其供稿中的内容及其关联的注释。


批量Facebook页面抓取工具

  • 定价:每月起价为49美元,适用于100个Actor计算单元
  • 免费试用:入门计划附带10个Actor计算单元
  • 数据输出格式: JSON
  • 支持的操作系统:基于云–通过API访问

Apify是已知的Web抓取工具提供商。除了自己的工具外,它还托管可用于网络抓取任务的用户工具。Facebook Pages Scraper是一种这样的工具,您可以使用它从Facebook页面中抓取公共资料信息。它可以帮助您从Facebook页面提取帖子,评论和评论等。

它可以作为API使用,就像Proxycrawl上的Facebook Scraper一样。它易于使用,要求您将HTTP请求发送到其端点,并且响应以JSON对象的形式发送回。


结论

毫无疑问,抓取Facebook十分困难,并且要进行大量的工程设计,适当的计划和执行。如果您知道自己无法满足成功抓取Facebook的要求,那么剩下的唯一选择就是使用市场上已经制作好的Facebook网络抓取工具。上面是经过测试并证明可以使用的Facebook抓取的列表。