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

如何让requests.get(url)与driver.get(url)返回相同输出?

解决requests.get与driver.get输出不一致的问题

差异原因

requests.get()仅获取服务器返回的初始静态HTML,不会执行页面中的JavaScript代码;而Chrome Driver会模拟真实浏览器,加载页面并执行JS,渲染出包含动态加载内容的最终页面。你访问的日本气象厅预警页面,核心内容大概率是通过JS异步加载的,因此两者输出不同。

可行解决方案

方法1:使用支持JS渲染的requests扩展库

可以用requests-html(requests的扩展库,内置无头浏览器)直接获取渲染后的页面,用法接近原生requests:

from requests_html import HTMLSession
from bs4 import BeautifulSoup

url = 'https://www.jma.go.jp/bosai/warning/#lang=en'
session = HTMLSession()
# 发送请求并执行页面JS
response = session.get(url)
response.html.render()
# 解析渲染后的HTML
soup = BeautifulSoup(response.html.html, 'html.parser')
print(soup)

安装依赖:

pip install requests-html

方法2:直接调用动态数据接口

打开浏览器开发者工具(F12),切换到「Network」标签刷新页面,找到加载预警内容的XHR/fetch请求,复制其接口地址和请求参数,用requests直接调用该接口获取原始数据(通常是JSON格式),这种方式效率更高,无需渲染整个页面。

额外注意

如果遇到反爬拦截,需要在requests请求中添加模拟浏览器的请求头(比如User-Agent、Cookie等),可以从Chrome的Network请求详情中复制这些信息,加到requests.get()的headers参数里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:15:46