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

Python如何过滤爬取的链接列表 仅保留指定社媒URL

Python实现链接过滤的方案

你要的类似Google Sheets FILTER函数的效果,在Python里不需要额外依赖库,直接通过基础的字符串判断就能实现,直接在遍历<a>标签提取链接的环节加过滤规则即可,不用全量收集无关链接后再二次清理。

核心优化逻辑

  • 提前定义好需要保留的3个社交平台域名规则
  • 提取href属性时先做非空判断,避免个别无href属性的a标签触发运行报错
  • 逐一对提取到的链接做规则匹配,只有符合域名要求的链接才存入结果列表,其余直接跳过

优化后可直接运行的代码

from bs4 import BeautifulSoup
import requests

# 配置需要保留的链接域名前缀,后续新增过滤规则直接往这个列表加即可
ALLOWED_SOCIAL_DOMAINS = [
    "https://www.facebook.com",
    "https://www.twitter.com",
    "https://www.instagram.com"
]

def get_profile(url):
    social_links = []
    req = requests.get(url)
    soup = BeautifulSoup(req.text, 'html.parser')
    container = soup.find('div', attrs={'class': 'main-container'})

    for a_tag in container.find_all('a'):
        href = a_tag.get('href')
        # 跳过空链接
        if not href:
            continue
        # 匹配目标域名,符合条件就存入结果
        for domain in ALLOWED_SOCIAL_DOMAINS:
            if href.startswith(domain):
                social_links.append(href)
                break

    # 输出当前页面结果
    print(f"页面 {url} 提取到的社交账号链接:")
    for link in social_links:
        print(f"- {link}")
    print("-" * 30)


if __name__ == "__main__":
    get_profile('https://basketball.realgm.com/player/Carmelo-Anthony/Summary/452')
    get_profile('https://basketball.realgm.com/player/LeBron-James/Summary/250')

和Google Sheets过滤逻辑的对应关系

你之前在Sheets里用的FILTER+多条件判断逻辑,和上面Python实现的逻辑完全等价:

  • Sheets逻辑:逐行检查A列的链接,只要包含三个平台域名任意一个就保留
  • Python逻辑:逐个检查提取到的href值,只要以三个平台域名开头就保留,过滤其余无关内容

如果后续需要调整过滤规则,比如新增TikTok、YouTube的账号链接爬取,只需要把对应域名加到ALLOWED_SOCIAL_DOMAINS列表中即可,不需要修改核心遍历和判断代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:51:47