如何用Python+BeautifulSoup筛选BBC首页文章链接而非爬取全部链接
BBC首页新闻链接爬虫调整方案
核心过滤逻辑
BBC首页的新闻文章链接有明确的可识别特征,你可以通过路径规则+元素属性两层过滤,完全筛掉导航、广告、页脚等非新闻链接:
- 所有正式发布的新闻文章路径均包含
/news/、/sport/、/culture/、/future/、/travel/这类内容板块前缀 - 首页新闻卡片内嵌的
<a>标签普遍绑定了统一的前端样式类,2024年BBC首页前端框架未改动的情况下用属性过滤精度更高
修改后可直接运行的代码
import requests from bs4 import BeautifulSoup def linkScraper(): html = requests.get("https://www.bbc.com/").text soup = BeautifulSoup(html, 'html.parser') # 定义新闻链接匹配的路径前缀规则 news_path_prefixes = ("/news/", "/sport/", "/culture/", "/future/", "/travel/") for link in soup.find_all('a', href=True): href = link.get('href') # 过滤:路径符合新闻前缀规则,排除导航/广告/站外跳转链接 if href.startswith(news_path_prefixes): # 补全相对路径为完整可访问链接 full_url = f"https://www.bbc.com{href}" if href.startswith("/") else href print(full_url)
可选优化项
如果要进一步过滤掉非文章类的新闻列表页链接,可以再加一层路径长度判断:正常单篇新闻文章的路径除了板块前缀外,还会带数字ID或者标题slug,路径段数≥3,比如/news/world-asia-china-68972345,可以排除掉/news/这类板块首页链接。
内容的提问来源于stack exchange,提问作者Finez
相关产品推荐
相关产品推荐

