selenium webbrowser:如何通过迭代提取多个属性名?

2024-09-24 00:34:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从火车搜索平台(https://www.thetrainline.com)中删除数据(发车时间、承运商、价格等),但在提取属性名称时遇到了一个问题。所有连接的HTML如下所示,我想得到所有载体的列表,即我想从属性“data-test-carrier-neme”中得到相应的载体,这里是“trenitalia

div class="_1moixrt _dtnn7w" tabindex="0"span data-test-carrier-name="trenitalia"

例如,我只是通过迭代收集属性的文本(参见语法) 现在对于运营商,我无法成功收集属性名称。我只得到第一次迭代/第一次连接的运营商名称,但没有得到下面的连接

dep_times = driver.find_elements_by_xpath('//div[@class="_1rxwtew "]')
dep_times_list = [x.text for x in dep_times]

#第一种方法:我得到属性名,但只针对第一个连接

carrier1 = driver.find_elements_by_xpath('(//div[@class="_1moixrt _dtnn7w"])[1]/span[1]')

carrier1_list = [x.get_attribute("data-test-carrier-name") for x in carrier1]

Output: ['trenitalia']

#第二种方法:我访问所有连接的属性,但不获取属性名称:

carrier1 = driver.find_elements_by_xpath('(//div[@class="_1moixrt _dtnn7w"])[1]/span[1]')

carrier1_list = [x.get_attribute("data-test-carrier-name") for x in carrier1]

Output: [None, None, None, None, None, None]

有人能调整我的代码来解决我的问题吗?非常感谢你的帮助


Tags: nametestdiv名称nonedata属性class
1条回答
网友
1楼 · 发布于 2024-09-24 00:34:04

第一种方法中使用的xpath只返回一个元素,这就是为什么结果只显示第一个载体名称。试试这个-我刚从xpath中删除了索引[1]

carrier1 = driver.find_elements_by_xpath('(//div[@class="_1moixrt _dtnn7w"])/span[1]')

carrier1_list = [x.get_attribute("data-test-carrier-name") for x in carrier1]

相关问题 更多 >