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

如何用Python3提取HTML源码中document.getElementById的括号内内容?

Python3提取HTML文档中特定JS代码的括号内容(以DuckDuckGo为例)

我想使用Python3从HTML文档里提取特定内容,以DuckDuckGo(https://duckduckgo.com)为例,需要定位到类似var error=document.getElementById("error_homepage");这样的代码,提取括号里的内容(也就是"error_homepage")。目前我写了初始代码,但不知道怎么完成提取逻辑:

import urllib.request
u = input ('Please enter URL: ')
x = urllib.request.urlopen(u)
print(x.read())

嘿,这事儿用正则表达式就能轻松搞定,我给你调整下代码,一步步来解释:

  1. 解码响应内容:urlopen.read()返回的是字节流,得先解码成字符串才能处理;
  2. 匹配目标模式:用正则匹配document.getElementById("xxx")这种结构,把括号里的内容作为捕获组;
  3. 处理匹配结果:判断是否找到匹配项,再提取对应的内容。

改进后的完整代码:

import urllib.request
import re

# 获取输入URL
u = input('Please enter URL: ')
# 发起请求并解码内容
response = urllib.request.urlopen(u)
html_content = response.read().decode('utf-8')

# 定义正则表达式:匹配document.getElementById("xxx")的结构,捕获引号内的内容
pattern = re.compile(r'document\.getElementById\("([^"]+)"\)')
# 查找所有匹配项
matches = pattern.findall(html_content)

# 处理结果
if matches:
    print("提取到的内容:")
    for item in matches:
        print(item)
else:
    print("未找到匹配的内容")

补充说明:

  • 正则表达式里的([^"]+)表示捕获所有非引号的字符,确保只提取括号内引号包裹的内容;
  • 如果目标代码里用的是单引号,把正则里的双引号改成单引号就行:r'document\.getElementById\('([^']+)'\)';
  • 要是你只需要第一个匹配结果,用pattern.search(html_content)替代findall,然后通过match.group(1)获取内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:53:15