selenium webbrowser:如何通过迭代提取多个属性名称?
selenium webbrowser: How to extract several attribute names by iteration?
我正在尝试从火车搜索平台抓取数据(出发时间、承运人、价格等)(https://www.thetrainline.com)
,但我在提取名称时遇到了问题的属性。所有连接的 HTML 如下所示,我想获得所有运营商的列表,即。我想从属性“data-test-carrier-neme
”中获取相应的运营商,这里是“trenitalia
”。
div class="_1moixrt _dtnn7w" tabindex="0"span data-test-carrier-name="trenitalia"
例如,有时我只是通过迭代收集属性文本(参见语法)
现在对于承运人,我没有成功收集属性名称。我只获得了第一个 iteration/first 连接的运营商名称,但没有获得后续连接的运营商名称。
dep_times = driver.find_elements_by_xpath('//div[@class="_1rxwtew "]')
dep_times_list = [x.text for x in dep_times]
#First Approach: 我得到了属性名称,但只针对第一个连接
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]
有人可以调整我的代码来解决我的问题吗?非常感谢您的帮助!!
第一种方法中使用的 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]
我正在尝试从火车搜索平台抓取数据(出发时间、承运人、价格等)(https://www.thetrainline.com)
,但我在提取名称时遇到了问题的属性。所有连接的 HTML 如下所示,我想获得所有运营商的列表,即。我想从属性“data-test-carrier-neme
”中获取相应的运营商,这里是“trenitalia
”。
div class="_1moixrt _dtnn7w" tabindex="0"span data-test-carrier-name="trenitalia"
例如,有时我只是通过迭代收集属性文本(参见语法) 现在对于承运人,我没有成功收集属性名称。我只获得了第一个 iteration/first 连接的运营商名称,但没有获得后续连接的运营商名称。
dep_times = driver.find_elements_by_xpath('//div[@class="_1rxwtew "]')
dep_times_list = [x.text for x in dep_times]
#First Approach: 我得到了属性名称,但只针对第一个连接
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]
有人可以调整我的代码来解决我的问题吗?非常感谢您的帮助!!
第一种方法中使用的 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]