[英]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"
例如,我只是通過迭代收集屬性文本(參見語法)現在對於運營商,我沒有成功收集屬性名稱。 我只獲得第一次迭代/第一次連接的運營商名稱,而不是以下連接。
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']
#Second 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:[無,無,無,無,無,無]
有人可以調整我的代碼以解決我的問題嗎? 非常感謝您的幫助!!
第一種方法中使用的 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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.