本文介绍如何利用beautifulsoup的css选择器(特别是`:not()`和`:-soup-contains()`伪类)结合兄弟元素选择器,精准提取位于“website”表头右侧单元格内的外部链接。
在网页解析中,仅靠find()或find_all()按标签名或类名筛选常导致结果泛化——例如infobox.find('a', class_='external', href=True)会匹配所有符合条件的外部链接,而无法体现其在DOM中的上下文关系。要精准定位“紧邻
BeautifulSoup 4.7.0+ 支持 :-soup-contains() 伪类(需配合 select() 或 select_one()),可按

website_link_element = infobox.select_one("th:-soup-contains(Website) + td a.external[href]")
if website_link_element:
url = website_link_element.get('href')
text = website_link_element.get_text(strip=True)
print(f"URL: {url}, Text: {text}")✅ 关键说明:
⚠️ 注意事项:
通过结构化CSS选择器替代嵌套循环查找,代码更简洁、可读性更强,也更符合现代HTML解析的最佳实践。