如何使用Selenium通过部分URL片段匹配获取对应完整URL
问题原因
你原有代码执行失败的核心问题有两个:
contains(text(), 'xxx')是用来匹配元素的可见文本内容,而你要找的目标URL存储在<img>标签的src属性中,并不属于元素文本范畴- 你设置的匹配规则带了
url(前缀,但你提供的HTML结构里的图片链接是直接写在src属性里的,不存在这个前缀,匹配规则和实际内容不匹配
修复后的代码
Selenium 3.x 旧版兼容写法
# 定位所有src属性包含指定片段的img标签 img_elements = driver.find_elements_by_xpath('//img[contains(@src, "cloudxyd.com/image/")]') # 提取所有符合条件的完整URL target_urls = [elem.get_attribute('src') for elem in img_elements]
Selenium 4.x 推荐写法(旧的find_elements_by_*方法已被废弃)
from selenium.webdriver.common.by import By # 定位所有符合条件的img标签 img_elements = driver.find_elements(By.XPATH, '//img[contains(@src, "cloudxyd.com/image/")]') # 提取所有完整URL target_urls = [elem.get_attribute('src') for elem in img_elements]
补充说明
如果你后续遇到URL是写在元素的style属性中(比如背景图的background-image: url(xxx)格式),才需要匹配带url(的内容,对应XPath写法为://*[contains(@style, "url(//cloudxyd.com/image/")]
内容的提问来源于stack exchange,提问作者user15055027
相关产品推荐
相关产品推荐

