You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Radlibrary无法获取Meta/Facebook广告库全部广告的技术问询

问题:Radlibrary爬取Facebook广告出现部分时段/全部广告缺失

使用R的Radlibrary包爬取丹麦(DK)地区政党Facebook页面广告时,出现广告缺失情况:

  • 部分政党仅缺失2022年4月的少量广告
  • 某政党缺失2021年1月1日之后的全部广告

两类情况均能获取到部分广告,该问题与项目GitHub的issue#103描述一致。已确认缺失的广告真实存在:

  1. 浏览器版广告库及Facebook广告库下载的CSV文件中均可查看到
  2. 数月前的爬取操作已成功获取到这些广告

当前代码仅返回210条广告中的117条,代码如下:

library("Radlibrary")

query_ad <- adlib_build_query(ad_reached_countries = 'DK',
                              ad_active_status = 'ALL',
                              search_terms = "NULL",
                              search_page_ids = "223040066022",
                              fields = c(
                                "id",
                                "ad_creation_time",
                                "ad_creative_bodies",
                                "ad_delivery_start_time",
                                "ad_delivery_stop_time",
                                "ad_snapshot_url",
                                "currency",
                                "page_id",
                                "page_name",
                                "publisher_platforms",
                                "impressions",
                                "spend"
                              ))

response_ad <- adlib_get_paginated(query_ad, max_gets = 10, token = token)

results_tibble_ad <- as_tibble(response_ad, type = "ad",
                               censor_access_token = NULL)

可能的修复方案

1. 增大分页请求上限

当前max_gets = 10限制了分页请求的数量,Facebook广告库的分页数据可能需要更多请求才能完整获取。尝试提高该参数值:

response_ad <- adlib_get_paginated(query_ad, max_gets = 50, token = token)

2. 更新Radlibrary包

项目的issue#103可能已在后续版本中修复,检查并更新到最新版:

# 查看当前版本
packageVersion("Radlibrary")
# 从CRAN更新
install.packages("Radlibrary")
# 或安装GitHub开发版
devtools::install_github("facebook/Radlibrary")

3. 拆分时间范围查询

针对特定时段广告缺失的情况,将查询拆分为多个时间区间分别请求,避免单次查询覆盖过大范围导致数据截断:

# 示例:单独查询2021年的广告
query_2021 <- adlib_build_query(
  ad_reached_countries = 'DK',
  ad_active_status = 'ALL',
  search_terms = NULL,
  search_page_ids = "223040066022",
  ad_delivery_date_min = "2021-01-01",
  ad_delivery_date_max = "2021-12-31",
  fields = c("id", "ad_creation_time", "ad_creative_bodies", ...) # 保留原字段
)
response_2021 <- adlib_get_paginated(query_2021, max_gets = 50, token = token)

# 同理构建2022年及之后的查询,最后合并结果
results_combined <- dplyr::bind_rows(as_tibble(response_2021, type = "ad"), ...)

4. 修正查询参数细节

  • 将search_terms = "NULL"改为search_terms = NULL(避免将字符串"NULL"作为无效搜索条件)
  • 尝试单独指定ad_active_status = 'ACTIVE'或'INACTIVE'分别查询,再合并结果,确认是否因状态过滤导致数据缺失

5. 验证API令牌有效性

确保使用的API令牌未过期,且拥有ads_read等访问广告库的必要权限,可尝试重新生成令牌后再次请求。


内容的提问来源于stack exchange,提问作者Mads F. Hove

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 00:15:45