本文介绍如何利用 requests-html 库通过 css 选择器精准定位并提取具有特定 class(如 `class=”in-match”`)的 “ 标签中的 `href` 属性值,避免抓取无关链接,提升网页解析效率与准确性。
在网页数据采集实践中,常需从大量 HTML 链接中筛选出符合业务逻辑的特定目标链接(例如仅抓取“比赛详情页”对应的 )。原代码中直接调用 r.html.links 会返回页面中所有唯一 href 值(含导航栏、分页、广告等非目标链接),缺乏结构化控制,易引入噪声或遗漏关键路径。
Requests-HTML 提供了强大且简洁的 CSS 选择器支持(基于 PyQuery),推荐使用 find() 方法替代 links 属性,实现按标签语义精准提取。针对示例 HTML 中 的需求,正确做法是:
from requests_html import HTMLSession
matchlink = 'https://www.betexplorer.com/football/algeria/ligue-1/results/'
session = HTMLSession()
r = session.get(matchlink)
# 关键:使用 CSS 选择器定位带 in-match 类的 a 标签
anchor_elements = r.html.find('a.in-match')
match_urls = []
for elem in anchor_elements:
href = elem.attrs.get('href')
if href: # 防御性检查:确保 href 存在且非空
# 补全为绝对 URL(因原始 href 多为相对路径)
full_url = 'https://www.betexplorer.com' + href
match_urls.append(full_url)
print(full_url)
print(f"\n共提取 {len(match_urls)} 个 in-match 链接")
✅ 核心优势说明: