Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用selenium在存在嵌套div时提取链接,在没有嵌套div时提取空白链接_Python_Selenium_Exception Handling - Fatal编程技术网

Python 使用selenium在存在嵌套div时提取链接,在没有嵌套div时提取空白链接

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>

我想从以下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>
        </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