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

Python链接获取脚本需求:添加通配符/前缀匹配功能

解决BeautifulSoup筛选特定开头链接的问题

没问题!完全可以实现这个需求,而且有几种简单高效的方法,我给你详细讲一下:

方法一:使用字符串startswith()方法(推荐,简单直接)

这是最适合「开头匹配」场景的方法,直接判断链接的href属性是否以你指定的内容开头,还支持同时匹配多个开头。

完整代码示例:

from bs4 import BeautifulSoup
import requests

url = "你的目标URL"  
# 获取网页响应
response = requests.get(url)
# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')

# 筛选以特定内容开头的链接(示例:筛选以"/article/"开头的链接)
target_links = []
for link in soup.find_all('a', href=True):  # 只提取带有href属性的<a>标签
    href = link['href']
    # 替换成你需要的开头内容,也可以用元组匹配多个开头:比如('/article/', '/post/')
    if href.startswith('/article/'):
        target_links.append(href)

# 输出筛选后的链接
for link in target_links:
    print(link)

方法二:使用正则表达式(适合复杂匹配场景)

如果需要更灵活的匹配规则(比如开头包含特定模式),可以用正则表达式配合BeautifulSoup的筛选功能。

完整代码示例:

from bs4 import BeautifulSoup
import requests
import re

url = "你的目标URL"  
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# 编译正则表达式:^表示匹配字符串开头,这里匹配以"/article/"开头的链接
pattern = re.compile(r'^/article/')
# 直接筛选符合正则的href属性
target_links = [link['href'] for link in soup.find_all('a', href=pattern)]

# 输出结果
for link in target_links:
    print(link)

方法三:使用通配符(shell风格匹配)

如果你习惯用通配符(比如/article/*),可以借助fnmatch模块实现:

from bs4 import BeautifulSoup
import requests
from fnmatch import fnmatch

url = "你的目标URL"  
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# 用通配符匹配开头为"/article/"的链接
target_links = []
for link in soup.find_all('a', href=True):
    href = link['href']
    # 通配符规则:/article/* 表示以"/article/"开头的任意链接
    if fnmatch(href, '/article/*'):
        target_links.append(href)

print(target_links)

小提示

  • 如果是外部链接(比如以https://your-domain.com/article/开头),只需要把startswith()或正则里的内容换成完整的前缀即可。
  • find_all('a', href=True)会过滤掉没有href属性的空链接,避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:31:31