使用BeautifulSoup提取script标签内指定前缀链接的最佳方法
提取特定前缀链接的最优方案
你已经通过BeautifulSoup拿到了包含目标链接的script标签内容,直接用正则匹配即可,完全不受link数组长度、目标链接位置变化的影响:
完整实现代码
import re from bs4 import BeautifulSoup # 原有逻辑:提取包含目标前缀的script内容 script_str = soup.find(string=re.compile("https://link9876.net/index.php")) # 匹配所有前缀符合要求的完整链接 # 正则中对.做了转义避免通配,[^']*匹配到单引号结尾前的所有合法字符 target_links = re.findall(r"https://link9876\.net/index\.php[^']*", script_str) # 提取第一个匹配结果(匹配不到时不会报错) target_url = target_links[0] if target_links else None
方案优势
- 无需引入额外的JS解析依赖,执行效率高
- 不受link数组元素数量、目标链接索引动态变化的影响
- 匹配精度高,转义后的正则不会误匹配其他相似域名的链接
适配优化提示
如果遇到链接用双引号包裹的场景,可将正则修改为r"https://link9876\.net/index\.php[^'\"]*",同时适配单、双引号两种包裹形式。
内容的提问来源于stack exchange,提问作者Luis
相关产品推荐
相关产品推荐

