如何用Python Selenium获取页面指定h2标题下的所有href属性?
解决方法:定位特定H2下的A标签获取HREF
你之前的问题出在:通过find_elements_by_class_name('entry-title')拿到的是<h2>元素本身,而<h2>标签并没有href属性——href是它内部的<a>标签的属性。所以得调整定位逻辑,直接定位到目标<a>标签,或者在找到<h2>后再去查找它内部的<a>标签。
下面给你几种可行的实现方式:
方法1:使用CSS选择器直接定位目标A标签
CSS选择器可以精准匹配class="entry-title"的<h2>下的所有<a>标签,代码如下:
# 定位所有符合条件的<a>元素 target_links = driver.find_elements_by_css_selector('h2.entry-title a') # 遍历获取每个链接的href属性 for link in target_links: print(link.get_attribute('href'))
方法2:使用XPath定位目标A标签
XPath同样可以实现精准匹配,语法如下:
# 定位所有符合条件的<a>元素 target_links = driver.find_elements_by_xpath('//h2[@class="entry-title"]/a') # 遍历获取每个链接的href属性 for link in target_links: print(link.get_attribute('href'))
方法3:先定位H2再查找内部的A标签
如果你想保留先找<h2>的逻辑,也可以在每个<h2>元素内部再查找<a>标签:
# 先获取所有class为entry-title的<h2>元素 title_elements = driver.find_elements_by_class_name('entry-title') # 遍历每个<h2>,查找内部的<a>标签并获取href for title in title_elements: a_tag = title.find_element_by_tag_name('a') print(a_tag.get_attribute('href'))
这三种方法都能精准获取你需要的链接,不会拿到页面上其他无关的<a>标签的href。
内容的提问来源于stack exchange,提问作者userPyGeo
相关产品推荐
相关产品推荐

