在Python中使用Selenium查找链接图像的名称

在Python中使用Selenium查找链接图像的名称,python,html,selenium,selenium-webdriver,hyperlink,Python,Html,Selenium,Selenium Webdriver,Hyperlink,我有一个带有链接的html文件,我想区分链接是图像还是文本。我在Firefox或PhantomJS浏览器中使用Python3和Selenium。我们的目标是有一个自动的过程来浏览几百个html文件并找到带有图像的链接 我所做的: 我首先只关注一个html文件。 在第一步中,我得到html文件中所有图像的名称,我知道其中一个图像是链接,而其他图像不是。我叫这个名字 然后,我尝试推导一个或多个图像是否是链接。我使用: driver.find_element_by_xpath('(//a[/img[c

我有一个带有链接的html文件,我想区分链接是图像还是文本。我在Firefox或PhantomJS浏览器中使用Python3和Selenium。我们的目标是有一个自动的过程来浏览几百个html文件并找到带有图像的链接

我所做的: 我首先只关注一个html文件。 在第一步中,我得到html文件中所有图像的名称,我知道其中一个图像是链接,而其他图像不是。我叫这个名字

然后,我尝试推导一个或多个图像是否是链接。我使用:

driver.find_element_by_xpath('(//a[/img[contains(text(),"'+IMAGENAME[j]+'")]])')
or 
driver.find_element_by_xpath('//a[/img[contains(@src,IMAGENAME[j])]]') 
or 
driver.find_element_by_xpath('//a/img[contains(@src,IMAGENAME[j])]') 
with j = 0 (image is not a link) and j = 1 (image is a link).
在每种情况下,我都会收到相同的错误消息,这告诉我调用图像的方式肯定是错误的:

NoSuchElementException: Message: no such element: Unable to locate element:...
当我将
//a
部分保留在外面,并且只使用
//img
时,我得到的所有图像都没有错误消息


调用链接中的图像时,我做错了什么?是否有其他方法可以做到这一点?

如果您只是查找包含图像的所有链接的src属性,您可以使用以下方法:

imageLinks = driver.find_elements_by_xpath("//a//img")
imageNames = []
for element in imageLinks
    imageNames.add(element.get_attribute("src"))

我不确定我是否能正确理解您的目标,但是
//a[img]
将返回带有图像的链接和
//a[not(img)]
-带有文本的链接。请注意,如果您想在
XPath
中使用
j
变量,您应该使用带有%s变量“%j的
'XPath expression,而不是
'XPath expression with j variable'
,如果我没记错的话,
\\a
代表锚,而您可能正在寻找
href
?您好!非常感谢。太好了!我在for循环之后添加了“:”,并使用了“append”而不是“add”。马上!很高兴它起作用了。很抱歉“添加”。我对python没有我应该熟悉的那么熟悉。