使用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
相关产品推荐
相关产品推荐

