Python 使用selenium在存在嵌套div时提取链接,在没有嵌套div时提取空白链接
我想从以下html代码中提取一个列表,如:Python 使用selenium在存在嵌套div时提取链接,在没有嵌套div时提取空白链接,python,selenium,exception-handling,Python,Selenium,Exception Handling,我想从以下html代码中提取一个列表,如: [abc,xyz] [def, ] [ghi,xyzz] 以下是html代码: <html> <body> <div class="a"> <div class="b">abc</div> <div class="c"><a href="xyz"></a></div>
[abc,xyz]
[def, ]
[ghi,xyzz]
以下是html代码:
<html>
<body>
<div class="a">
<div class="b">abc</div>
<div class="c"><a href="xyz"></a></div>
</div>
<div class="a">
<div class="b">def</div>
</div>
<div class="a">
<div class="b">ghi</div>
<div class="c"><a href="xyzz"></a></div>
</div>
</body>
</html>
如果不存在这样的嵌套分区,如何在列表中填充空格?当前,您的
try/except
中的XPath没有得到NoTouchElementException
,因为它正在查找两个元素。您应该首先查找div.a
元素,然后查找每个元素的a
子元素:
elem = driver.find_elements_by_class_name('b')
divs = driver.find_elements_by_class_name('a')
url = []
for div in divs:
links = div.find_elements_by_xpath('.//a')
if len(links) > 0:
url.append(links[0].get_attribute('href'))
else:
url.append('')
i=0
while i < 3:
print [elem[i].text, url[i]]
i += 1
elem=driver。通过类名称('b')查找元素
divs=驱动程序。按类名称('a')查找元素
url=[]
对于div中的div:
links=div.find_elements_by_xpath('.//a'))
如果len(links)>0:
url.append(链接[0]。获取属性('href'))
其他:
url.append(“”)
i=0
而我<3:
打印[elem[i]。文本,url[i]]
i+=1
这样,第二个div
就有了空白元素
更新:我最初是在寻找类为
“c”
的div
,其中与
标记类似,只有两个。现在更新为查找类a
。你能帮我列出我在问题开头提到的相同列表吗?从很长一段时间以来,我一直在尝试同样的方法(@drkthng你能帮我解决这个问题吗?@PrabhjotRai尝试最新的更新。早些时候,我寻找的是div.a
的直系子代,而不是后代。此外,您在初始代码中遇到了一个问题,您希望在空字符串上调用。get_attribute(“href”)
,这会导致错误。已修复上述问题。
[abc,xyz]
[def,xyzz ]
[ghi,]
elem = driver.find_elements_by_class_name('b')
divs = driver.find_elements_by_class_name('a')
url = []
for div in divs:
links = div.find_elements_by_xpath('.//a')
if len(links) > 0:
url.append(links[0].get_attribute('href'))
else:
url.append('')
i=0
while i < 3:
print [elem[i].text, url[i]]
i += 1