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

如何用Python获取Facebook页面帖子数据?无输出问题排查与解决

使用facebook-scraper获取BBC News帖子无输出的解决办法

问题描述

我尝试通过Facebook Graph API获取Facebook页面的帖子数据,但未得到任何输出。于是参考教程使用facebook-scraper库编写如下代码,尝试获取bbcnews页面的帖子并打印post_entry,但仍然没有任何输出,请问该如何解决?

from facebook_scraper import get_posts
import pandas as pd

post_df_full = pd.DataFrame(columns = [])

for post in get_posts('bbcnews', extra_info=True, pages=5, options={"comments": True}):
    post_entry = post
    print(post_entry)
    fb_post_df = pd.DataFrame.from_dict(post_entry, orient='index')
    fb_post_df = fb_post_df.transpose()
    post_df_full = post_df_full.append(fb_post_df)

解决办法

  • 添加登录Cookie验证:当前Facebook对未登录请求限制极严,需传入登录后的Cookie才能正常获取数据。可以用浏览器插件(如EditThisCookie)导出Facebook的Cookie为JSON文件,然后在get_posts中指定:

    for post in get_posts('bbcnews', extra_info=True, pages=5, options={"comments": True}, cookies="facebook_cookies.json"):
        # 后续代码保持不变
    
  • 简化参数先做基础测试:

    • 暂时移除options={"comments": True},获取评论会大幅增加请求复杂度,容易触发限制;
    • 将pages改为1,先验证核心功能是否正常;
    • 添加timeout=15参数延长超时时间,避免网络波动导致无输出。
  • 更新facebook-scraper版本:旧版本可能存在兼容问题,执行以下命令更新:

    pip install --upgrade facebook-scraper
    
  • 添加异常捕获排查错误:在循环中加入异常捕获,查看具体报错信息:

    for post in get_posts('bbcnews', extra_info=True, pages=5, options={"comments": True}):
        try:
            post_entry = post
            print(post_entry)
            fb_post_df = pd.DataFrame.from_dict(post_entry, orient='index')
            fb_post_df = fb_post_df.transpose()
            post_df_full = post_df_full.append(fb_post_df)
        except Exception as e:
            print(f"请求出错: {str(e)}")
    
  • 验证页面标识正确性:确认bbcnews是页面的正确用户名,也可以尝试用页面数字ID(BBC News的数字ID为228730227148832)替换测试。

内容的提问来源于stack exchange,提问作者user58519

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:32:11