【问题标题】:Loop through divs inside div in Selenium/Python在 Selenium/Python 中循环遍历 div 中的 div
【发布时间】:2018-07-21 23:16:24
【问题描述】:

我有这个 HTML:

<div class="container">
    <div class="name">James</div>
    <div>Rodriguez</div>
    <div class="image">
        <div><img src="https://example.com/1.jpg"></div>
    </div>
</div>
<div class="container">
    <div class="name">Harry</div>
    <div>Kane</div>
    <div class="image">
        <div><img src="https://example.com/2.jpg"></div>
    </div>
</div>

如何遍历所有容器并获取姓名、姓氏(第二个 div)和图像 URL(img src)?到目前为止,我想出了这个:

items = []

containers = driver.find_elements_by_xpath('//div[@class="container"]')

for items in containers:
    name = items.find_element_by_xpath('//div[@class="name"]')
    print(name.text)

这应该给出两个名字。但是,我得到的输出是“James”的两倍,而不是“Harry”。

谢谢!

【问题讨论】:

  • 那么您的确切问题是什么?
  • 它就在那里:我如何遍历所有容器并获取姓名、姓氏(第二个 div)和图像 URL(img src)?

标签: python selenium loops selenium-webdriver xpath


【解决方案1】:

当使用 // 时,您将从根节点 (&lt;html&gt;) 开始搜索。在xpath 之前使用. 从元素位置开始搜索

for items in containers:
    name = items.find_element_by_xpath('.//div[@class="name"]')
    print(name.text)

【讨论】:

  • 谢谢,确实是这样。我选择了 Andersson 的答案,因为它在查找其他项目方面更加精细。
【解决方案2】:

尝试以下解决方案以获得所需的值

for item in containers:
    name = item.find_element_by_xpath('.//div[@class="name"]')
    surname = name.find_element_by_xpath('./following-sibling::div')
    image = surname.find_element_by_xpath('./following::img')
    print(name.text, surname.text, image.get_attribute('src'))

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多