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

使用BeautifulSoup爬取Facebook帖子及评论失败,求技术指导

问题原因
  • Facebook采用动态内容渲染:你用requests.get()获取的只是页面的静态骨架,帖子、评论这类核心内容是浏览器加载页面后通过JavaScript动态生成的,BeautifulSoup只能解析静态HTML,自然找不到这些动态生成的div标签。
  • 反爬机制限制:直接用requests请求Facebook页面,大概率会被识别为爬虫,返回的内容可能是登录验证页面或者不完整的内容,也会导致找不到目标元素。
Selenium 初始实现代码

首先完成准备工作:

  1. 安装Selenium:pip install selenium
  2. 下载对应浏览器的驱动(比如Chrome浏览器就下载ChromeDriver,版本要和你的浏览器匹配)

然后编写代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import time

# 初始化Chrome浏览器(用其他浏览器的话,替换为对应驱动,比如Firefox的webdriver.Firefox())
driver = webdriver.Chrome()

try:
    # 访问目标页面
    driver.get('https://www.facebook.com/ameedcoffee')
    
    # 显式等待:等待目标class的元素出现,最多等10秒(确保动态内容加载完成)
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'kvgmc6g5'))
    )
    
    # 也可以手动等待几秒,方便调试(新手可选)
    # time.sleep(5)
    
    # 获取包含动态内容的完整页面源码
    page_source = driver.page_source
    
    # 用BeautifulSoup解析源码
    soup = BeautifulSoup(page_source, 'html.parser')
    
    # 现在再查找目标div,就能拿到结果了
    cards = soup.find_all('div', 'kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q')
    print(f"找到{len(cards)}条帖子内容")
    
finally:
    # 关闭浏览器
    driver.quit()
注意事项
  • 首次运行可能会触发Facebook的登录验证,需要手动完成登录(之后可配置保存登录状态,避免重复验证)
  • 不要频繁发起请求,建议添加合理的等待时间,避免触发反爬限制
  • Facebook页面元素的class属性可能随时变动,如果之后再次找不到元素,需要重新检查页面的class值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:24:43