如何用Beautiful Soup通过span文本获取对应a标签的href属性
解决方案:通过span文本获取对应URL
你之前的代码失效原因是找错了节点关系——span嵌套在<a>标签内部,它的父元素就是承载href的<a>,而不是什么前序兄弟节点。另外注意你代码里写的匹配文本是"Title of URL:",但示例里的span文本是"Title of URL",多了个冒号,这也会导致匹配失败,要确保文本完全对应。
下面给两种可行的实现方式:
方法一:定位span后取父元素a的href
# 定位包含目标文本的span标签 target_span = soup.select_one('span:-soup-contains("Title of URL")') # 若找到span,直接获取其父元素a的href属性 if target_span: url = target_span.parent['href'] print(url) # 输出:http://someurl
方法二:用CSS选择器直接定位目标a标签
如果你的BeautifulSoup版本支持:has选择器(一般4.7.0及以上版本支持),可以直接选中包含指定文本span的a标签:
# 直接选择包含目标文本span的a标签 target_a = soup.select_one('a:has(span:-soup-contains("Title of URL"))') if target_a: url = target_a['href'] print(url)
内容的提问来源于stack exchange,提问作者Phil18013
相关产品推荐
相关产品推荐

