gpt4 book ai didi

python - Selenium:遍历元素组

转载 作者:技术小花猫 更新时间:2023-10-29 12:38:29 30 4
gpt4 key购买 nike

我已经用 BeautifulSoup 做到了这一点,但它有点麻烦,我想弄清楚我是否可以直接用 Selenium 做到这一点。

假设我有以下 HTML,它在页面源代码中以相同的元素但不同的内容重复多次:

<div class="person">
<div class="title">
<a href="http://www.url.com/johnsmith/">John Smith</a>
</div>
<div class="company">
<a href="http://www.url.com/company/">SalesForce</a>
</div>
</div>

我需要建立一个字典,其中每个人的条目如下所示:

dict = {'name' : 'John Smith', 'company' : 'SalesForce'}

我可以轻松地让 Selenium 生成每个顶级元素的内容列表:

driver.find_elements_by_class_name('person')

但是我无法遍历列表,因为上述方法没有将范围/源缩小到该元素的内容。

如果我尝试做这样的事情:

people = driver.find_elements_by_class_name('person')
for person in people:
print person.find_element_by_xpath['//div[@class="title"]//a').text

我只是一遍又一遍地得到同一个名字。

我需要逐组执行此操作,因为在我的情况下,遍历整个页面并单独附加每个标签是行不通的(存在无限滚动,因此效率非常低)。

有谁知道是否可以直接在 Selenium 中执行此操作,如果可以,怎么做?

最佳答案

使用find_elements_by_class_name()获取所有 block 和find_element_by_xpath()为每个人获取 titlecompany:

persons = []
for person in driver.find_elements_by_class_name('person'):
title = person.find_element_by_xpath('.//div[@class="title"]/a').text
company = person.find_element_by_xpath('.//div[@class="company"]/a').text

persons.append({'title': title, 'company': company})

关于python - Selenium:遍历元素组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27006698/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com