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

如何使用BeautifulSoup从指定3个域名提取网页链接?

用BeautifulSoup提取指定多域名链接的可行方案

嘿,我来帮你搞定这个问题!你之前尝试用|运算符组合域名的思路没错,但CSS选择器里并不支持这种写法,所以才会失效。下面给你两种简单好用的解决办法:

方案一:用CSS选择器多条件匹配(推荐)

CSS选择器中,逗号代表“或”的逻辑,我们可以把每个域名对应的选择器用逗号分隔开,就能匹配任意一个目标域名的链接了。代码示例如下:

# 定义需要匹配的三个目标域名
target_domains = [
    "http://ABCD.tv/",
    "https://AABCD.tv",
    "http://FFGV.VV"
]

# 自动拼接成CSS选择器字符串
css_selector = ", ".join([f"a[href^='{domain}']" for domain in target_domains])

# 匹配并输出符合条件的链接
for link in soup.select(css_selector):
    print(link.get('href'))

这个方法和你原来的单域名写法逻辑一致,只是通过逗号把多个选择器组合起来,完全符合你的需求,而且代码简洁高效。

方案二:提取所有链接后手动过滤

如果之后你需要更灵活的过滤规则(比如匹配域名中间部分、忽略大小写等),可以先提取所有带href属性的链接,再用Python的逻辑手动筛选:

target_domains = [
    "http://ABCD.tv/",
    "https://AABCD.tv",
    "http://FFGV.VV"
]

# 遍历所有带href属性的<a>标签
for link in soup.find_all('a', href=True):
    href = link.get('href')
    # 判断链接是否以任意目标域名开头
    if any(href.startswith(domain) for domain in target_domains):
        print(href)

小提醒

注意检查目标域名的写法和网页中链接的实际开头是否一致,比如http://ABCD.tv/和http://ABCD.tv(末尾无斜杠)是两种不同的开头,避免漏匹配哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:17:46