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

使用Python Requests从HTML中提取特定JavaScript变量

提取GET响应HTML中的JavaScript变量值(Python实现)

嘿,我来帮你搞定这个!从HTML响应里提取这些指定的JS变量其实挺简单的,用正则表达式就能精准捕获,毕竟它们都是标准的var 变量名 = "值";格式。下面是具体的实现步骤和代码示例:

步骤1:发送GET请求获取响应内容

首先用requests库发送请求拿到HTML内容,这是基础操作:

import requests
import re

# 替换成你的目标请求URL
target_url = "https://your-target-url.com"
response = requests.get(target_url)
html_content = response.text

步骤2:正则匹配提取变量值

针对你提到的accessToken、ivString和fpAccountId,我们可以为每个变量写精准的正则匹配规则,确保只捕获我们需要的内容:

# 提取accessToken
access_token_match = re.search(r'var accessToken = "([^"]+)";', html_content)
access_token = access_token_match.group(1) if access_token_match else None

# 提取ivString
iv_string_match = re.search(r'var ivString = "([^"]+)";', html_content)
iv_string = iv_string_match.group(1) if iv_string_match else None

# 提取fpAccountId(如果变量名和示例一致的话)
fp_account_id_match = re.search(r'var fpAccountId = "([^"]+)";', html_content)
fp_account_id = fp_account_id_match.group(1) if fp_account_id_match else None

代码解释

  • re.search()会在HTML内容中查找第一个匹配正则的片段
  • 正则里的([^"]+)是核心:它会捕获双引号之间的所有内容(因为[^"]表示非双引号的字符,+表示匹配一个或多个)
  • 用三元表达式处理None的情况:如果某个变量在响应中不存在,会返回None,避免直接调用group(1)报错

灵活调整正则(可选)

如果遇到变量格式有变化的情况(比如用单引号包裹值、末尾没有分号),可以稍微修改正则来兼容:

# 兼容单/双引号、可选分号的正则
flexible_pattern = r'var (\w+) = ["\']([^"\']+)["\'];?'
# 一次性提取所有匹配的变量
all_matches = re.findall(flexible_pattern, html_content)
# 转成字典方便使用
variables_dict = {name: value for name, value in all_matches}

# 然后按需取值
access_token = variables_dict.get("accessToken")
iv_string = variables_dict.get("ivString")
fp_account_id = variables_dict.get("fpAccountId")

这种方式更灵活,能一次性提取所有符合格式的JS变量,再通过字典键来获取需要的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:50:48