该项目旨在提供 Facebook 广告库上政治广告的可搜索且完整的副本
自 2023 年 8 月 17 日起,它还包含不早于该日期在欧盟投放的广告。您可以在下面看到额外的字段。
Facebook 已经通过其网络界面提供了所有这些数据。问题在于它很难搜索,因此对于政治广告分析没有真正的用途。除此之外,API 很难访问并且在许多方面受到限制。
这些数据已经是公开的,因此这个数据集只是帮助提供Facebook Meta 想要提供的透明度。
实时访问数据的站点:https://ad-archive.nexxxt.cloud
数据直接从他们的官方 API 加载。
自 V3 起,广告将使用空查询 (*) 在所有国家/地区进行抓取。该查询结果非常可靠,并返回所有页面的所有广告
以前,数据是通过从广告报告中获取的 page_id 下载的。这些应该只包括与政治或具有政治重要性的问题相关的页面,但并非所有页面都被明确标记。
由于这些报告包含用户生成的 page_names 和免责声明,某些名称或免责声明可能会被奇怪的字符损坏。
我意识到的另一件事是,某些广告(或整个页面?)暂时(或永久?)无法通过发布它们的 page_id 进行搜索。您可以通过检查报告中指定的广告数量与数据集中实际加载的广告数量来识别它们。通常这也会导致页面看起来有 0 个广告。您可以通过 msg 字段为空 (msg="") 来识别它们。
还有一个问题是 page_id=0 页面的广告无法通过其 page_id 进行抓取。这些通常只是指“某个 ID 的 Instagram 用户”或其他 Facebook 平台用户。请查看我使用的报告以获取更多信息。更新:它们是使用空查询技巧进行爬网的。我后来也意识到,当抓取非常大的网站时,尽管它们应该包含广告,但它们是空的。
最终,这导致该数据集中的广告少于报告中应有的数量。现在应该很准确了。
id(表中的“_id”)
广告创建时间
广告创意主体
广告创意链接标题
ad_creative_link_descriptions
广告素材链接标题
广告投放开始时间
广告投放停止时间
语言
页面ID
页面名称
发布商平台
署名
货币
按地区配送
人口统计分布
估计观众规模
印象数
花费
目标位置
目标性别
目标年龄
eu_total_reach
受益人_付款人
年龄_国家_性别_到达_细分
渲染(定义渲染版本是否可用)(自 V5 起已弃用!)
render_started(用于对广告进行排队以进行渲染)(自 V5 起已弃用!)
丢失(如果在呈现时未找到广告,则为 True)
_last_updated(包含广告上次抓取/更新的日期)
字段ad_snapshot_url
不会被抓取,因为它只是 id 和访问令牌的组合:
https://www.facebook.com/ads/archive/render_ad/?id=<id>&access_token=<token>
如果您没有任何访问令牌,要访问广告,可以使用此链接:
https://www.facebook.com/ads/library/?id=<id>
要在没有访问令牌的情况下实际渲染广告,您可以使用我的 cloudflare Worker 来代理数据: https://render-facebook-ad.lejo.workers.dev/<id>
您可能需要禁用一些浏览器隐私设置(像 Firefox)阻止跨站点 Facebook 请求。
有关更多信息,请查看example.json
文件或官方 API 上的字段描述。
preview_renderer
文件夹中的脚本用于从每个广告的ad_snapshot_url
中获取相关元素的屏幕截图。单独的render_queue
数据库用于对广告进行排队以进行渲染。渲染后图像会存储一个月,但可以随时重新渲染。
渲染后,您可以在此处查看它们: https://facebook-ad-previews.nexxxt.cloud/<id>.jpg
您可以随时访问为广告存储的当前数据: https://ad-archive.nexxxt.cloud/ad/<AD_ID>
。该端点还可用于自动下载广告信息并允许跨源请求。请注意,抓取新广告并将其添加到数据库可能需要一些时间。
2023 年 8 月 17 日,自该日期以来的所有欧盟广告均出现在数据库中。现在的尺寸是之前的两倍多。欧盟广告包含如上所述的额外字段。
用于渲染的字段已被删除(丢失的除外),现在单独处理。
下载元数据 (02.11.2023) kaggle
下载元数据 (01.03.2024) kaggle
将数据库下载到 JSON 文件并压缩它花了我越来越长的时间。这就是我改用压缩 BSON 文件 (bson.gz) 的原因。它们是 mongodb 原生的,可以更快、更可靠地创建。
它们是使用 mongodump 工具创建的,并且可以使用 mongorestore 加载到您自己的 mongodb 中。您还可以使用他们的 bsondump 工具将它们转换为普通的 json 文件。
除此之外,您还可以使用元数据文件来恢复我的数据库中使用的索引。
其中一些数据集也可以在 kaggle 上找到。
下载元数据 (07.09.2022)
下载元数据 (22.10.2022) kaggle
下载元数据 (30.12.2022) kaggle
下载元数据 (15.03.2023) kaggle
下载元数据 (06.08.2023) kaggle
已使用空查询 (*) 在所有国家/地区抓取广告。理论上现在应该包含库中的所有广告。
为预览添加了rendered
字段。
没有todo.json
集合文件,因为统计信息错误并且与此爬网无关。
下载 (09.02.2022)
下载 (03.04.2022)
下载 (2022年5月26日)
V2 及更早版本:
todo.json
-文件:基于广告报告,包含抓取的所有页面以及上次抓取的时间戳和分页光标(之后)
还包含多个免责声明和国家/地区的页面统计信息。大页面现在应该已完成。使用不同日期的多份报告进行更新。
下载
我首先爬行了德国和美国图书馆,然后决定创建一个完整的爬行。
对于此爬网, todo.json
包含一个lang
字段,指定页面来自的报告。使用import_reports.py
脚本将报告全部自动加载到数据库中。
下载报告
这些国家的数据也可以在kaggle.com上找到
德国 (DE) 下载报告
美国(美国)下载报告
之前的抓取是根据Facebook的官方报告进行的。我将它们加载到 mongodb 中,旧的crawl.py
脚本从 Api 中提取数据并将其添加到广告集合中。现在我只是使用空查询 (*) 技巧从所有国家/地区的所有页面下载广告,请参阅: crawlall.py
为此,您需要一个(或更好的多个)访问令牌。该脚本将自动处理速率限制,但如果您没有足够的令牌,您可能无法拉动多个线程。
有关更多信息,请查看crawlall.py
文件。
如果您有关于 Facebook API/库的更多信息,或者认为此数据的分发存在任何法律问题,请联系我:[email protected] 或打开一个问题!