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

如何提取网页script中的xmlHttp.open链接?BeautifulSoup无法定位跳转链接

问题:提取script代码中的XMLHttpRequest请求链接

我尝试用以下代码获取跳转链接:

r = c.get(url, headers=ua, timeout=15, allow_redirects=True)
soup = BeautifulSoup(r.content, 'html.parser')
print(soup)

执行后返回的内容包含一段script代码:

<script>
                         window.location.href = 'https://t.me/Claim_Litecoins_bot';
                         var xmlHttp = new XMLHttpRequest();
                                    xmlHttp.open('GET', 'https://telegramfaucet.me/tonclick/Visit.php?c=3lj8a7rxq0', false);
                                    xmlHttp.send(null);
                                                                        window.location.href = 'https://t.me/Claim_Litecoins_bot';
                         </script>

我想获取xmlHttp.open中的目标链接,但目前用if soup.find_all("a", href=True): print(soup)的方法找不到,因为链接不在a标签里,请问该怎么解决?


解决方案

你当前的方法只针对HTML中的<a>标签,但目标链接藏在JavaScript代码里,需要换思路处理:

  • 步骤1:定位目标script标签并提取文本
    用BeautifulSoup找到包含xmlHttp.open的script标签,获取里面的JS代码内容。

  • 步骤2:用正则表达式匹配链接
    针对xmlHttp.open('GET', '链接地址', false)的格式,用正则提取单引号包裹的链接字符串。

具体代码示例

import re
from bs4 import BeautifulSoup

# 假设已获取到响应内容r.content
soup = BeautifulSoup(r.content, 'html.parser')

# 筛选包含XMLHttpRequest的script标签
target_script = None
for script in soup.find_all('script'):
    if 'xmlHttp.open' in script.text:
        target_script = script.text
        break

if target_script:
    # 正则匹配目标链接
    link_match = re.search(r"xmlHttp\.open\('GET', '(.*?)', false\)", target_script)
    if link_match:
        target_url = link_match.group(1)
        print("提取到的链接:", target_url)
    else:
        print("未匹配到目标链接")
else:
    print("未找到包含XMLHttpRequest的script标签")

说明

  • 正则表达式r"xmlHttp\.open\('GET', '(.*?)', false\)"采用非贪婪匹配,能精准提取xmlHttp.open第二个参数里的链接地址。
  • 通过判断'xmlHttp.open' in script.text可以快速筛选出目标script标签,避免无效遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:07:42