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

为什么使用Python的BeautifulSoup无法获取到完整的div标签内容?

问题根因

Quora 页面采用**客户端渲染(CSR)**模式,requests发起请求只能拿到服务端返回的初始空白HTML模板,#root 标签内的内容是浏览器加载页面后执行JS脚本、异步请求接口数据后才渲染生成的,静态解析未执行JS的原始HTML自然无法获取到目标内容。

解决方案

方案1:使用Selenium模拟浏览器运行(最简便)

该方案会模拟真实浏览器的运行逻辑,自动执行页面JS完成内容渲染,直接拿到完整的页面源码。

  • 首先安装依赖包:
    pip install selenium webdriver-manager
  • 参考代码:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import time

URL = "https://www.quora.com/profile/Siddhartha-gaur-5"
# 配置无头模式,无需弹出可视化浏览器窗口
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless=new")
# 增加反爬标识,避免被Quora识别为爬虫
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
driver.get(URL)
# 等待页面异步加载完成,可根据网络情况调整等待时长
time.sleep(3)

# 获取渲染完成后的完整页面源码
full_page = driver.page_source
soup = BeautifulSoup(full_page, 'html5lib')
root_div = soup.find("div", id="root")
print(root_div.prettify())

# 关闭浏览器进程
driver.quit()

方案2:调用Quora官方API

该方案稳定性更高,返回的数据为结构化格式,无需解析HTML。可直接通过Quora开放的用户信息接口请求目标用户的资料数据,反爬限制相对更低。

注意:Quora有完善的反爬机制,频繁发起请求会触发验证码校验或IP封禁,操作时请控制请求频率,遵守平台的robots协议要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:30:00