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

为何view-source的HTML与prettify()输出不同?BeautifulSoup查class返回空求助

排查Quora页面无法获取class="expanded"元素的问题

我来帮你分析下为什么你的代码返回空列表,以及对应的解决办法:

1. 核心原因:动态内容加载

Quora这类现代网站大量使用JavaScript动态渲染页面内容。你用requests获取的只是初始HTML骨架,而浏览器中view-source看到的(或者你期望的)expanded元素,很可能是页面加载完成后通过JavaScript动态生成并插入到DOM中的。requests和BeautifulSoup都无法执行JavaScript,自然抓不到这些动态生成的元素。

2. 先试试简单修复:模拟浏览器请求头

有时候Quora会识别非浏览器的请求(比如requests默认的User-Agent),返回简化版的HTML。你可以先添加浏览器的请求头,看看能不能拿到完整内容:

import requests
from bs4 import BeautifulSoup

url = "https://www.quora.com/How-can-I-write-a-bot-using-Python"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')
print(soup.find_all(class_='expanded'))

如果这个方法没用,那基本可以确定是动态加载的问题,需要用浏览器模拟工具。

3. 终极解决方案:用浏览器自动化工具抓取动态内容

你可以用selenium或者playwright这类工具模拟真实浏览器的行为,让页面完整渲染后再抓取元素。这里给你一个selenium的示例:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time

# 配置无头浏览器(不弹出窗口)
options = Options()
options.add_argument('--headless=new')
options.add_argument('--disable-gpu')
options.add_argument('User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36')

# 启动浏览器
driver = webdriver.Chrome(options=options)
driver.get("https://www.quora.com/How-can-I-write-a-bot-using-Python")

# 等待页面加载完成(根据网络情况调整时间)
time.sleep(3)

# 查找所有class为expanded的元素
elements = driver.find_elements(By.CLASS_NAME, 'expanded')
for elem in elements:
    print("元素内容:", elem.text)
    # 如果需要获取HTML结构,可以用elem.get_attribute('innerHTML')

# 关闭浏览器
driver.quit()

注意事项

  • Quora有严格的反爬机制,频繁请求可能会被封禁IP,建议添加合理的延迟,避免短时间内大量请求。
  • 如果需要抓取更多内容,可能需要处理登录、验证码等问题,这会进一步增加复杂度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:24:06