Python数据抓取返回空<main>标签,如何获取完整渲染内容
问题根因
你要抓取的是Angular框架开发的单页应用,
解决方案
方案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
相关产品推荐
相关产品推荐

