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

如何提取HTML文件中script标签内的特定hash值

提取HTML最后一个script标签内hash值的实现方法

错误点说明

你写的re.search(html, "hash: (*?),")存在3个核心问题:

  • re.search参数顺序颠倒,第一个参数需传入正则规则,第二个才是待匹配的文本内容
  • 原JS代码中hash是带双引号的键"hash",未匹配双引号会导致匹配失败
  • 通配符语法错误,*不能单独使用,需前置指定匹配的字符类型,匹配任意字符的非贪婪写法为.*?

正确实现方案(BeautifulSoup + 正则 双保险)

先通过BeautifulSoup提取最后一个script标签的内容,再用正则匹配hash值,避免前面的script标签出现同名字段干扰:

from bs4 import BeautifulSoup
import re

# 假设你的HTML内容存在html_content变量中
# 没有安装lxml库可将解析器替换为Python内置的html.parser
soup = BeautifulSoup(html_content, 'lxml')
# 提取所有script标签,取下标为-1的最后一个
last_script_content = soup.find_all('script')[-1].string

# 编写正则匹配hash值
hash_match = re.search(r'"hash"\s*:\s*"([a-f0-9]+)"', last_script_content)
if hash_match:
    target_hash = hash_match.group(1)
    print(target_hash) # 输出结果:13334a0e457f0793ec

正则规则说明

r'"hash"\s*:\s*"([a-f0-9]+)"'各部分含义:

  • r标记原始字符串,避免Python转义字符和正则转义规则冲突
  • "hash"精准匹配JS中的键名
  • \s*匹配0个或多个空白字符,兼容代码格式化时加的空格/换行
  • ([a-f0-9]+)捕获组,匹配hash值的十六进制字符(0-9、a-f),拿到的结果就是需要的hash值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:15:01