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

Python数据抓取返回空<main>标签,如何获取完整渲染内容

问题根因

你要抓取的是Angular框架开发的单页应用,

标签内的所有内容都是前端JavaScript执行后动态渲染生成的。你当前使用的requests、urllib库只能获取服务端返回的初始静态HTML,不会执行页面内置的JS代码,因此拿到的是空的main标签。

解决方案

方案1:直接请求数据接口(优先选择)

  • 打开浏览器开发者工具的「网络」面板,刷新页面后筛选XHR/Fetch类请求,找到返回main标签对应内容的后端接口
  • 直接用已经完成登录的session请求该接口,即可拿到结构化的目标数据,不需要解析HTML

方案2:用支持JS执行的工具模拟浏览器渲染

如果找不到对应接口,可以用无头浏览器模拟真实用户访问,等页面渲染完成后再提取内容,示例代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import requests

# 登录逻辑保持不变,拿到登录态
session = requests.Session()
payload = {'email':'你的账号', 'password':'你的密码'}
session.post("登录接口地址", data=payload)

# 配置无头Chrome,不弹出可视化窗口
chrome_options = Options()
chrome_options.add_argument("--headless=new")
driver = webdriver.Chrome(options=chrome_options)

# 把登录Cookie写入浏览器,跳过登录步骤
driver.get("站点根域名")
for cookie in session.cookies:
    driver.add_cookie({
        "name": cookie.name,
        "value": cookie.value,
        "domain": cookie.domain
    })

# 访问目标页面等待渲染完成
driver.get("待抓取页面地址")
driver.implicitly_wait(10)
# 读取渲染完成的完整HTML
full_html = driver.page_source
print(full_html)

driver.quit()

额外说明

  • 你要求不使用lxml库的话,拿到渲染后的HTML后可以直接用字符串匹配提取目标内容,也可以用Python内置的html.parser模块做解析处理
  • 抓取操作请遵守对应站点的使用规则和相关法律法规,避免对站点服务造成异常压力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 16:54:03