如何用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
相关产品推荐
相关产品推荐

