我使用 Python Selenium 來獲取 Youtube Video URL。我首先加載主頁,然后單擊隨機結果。從第二頁開始,我想在右側獲得建議的視頻。但是當我這樣做時,驅動程式只是將建議的視頻添加到主頁上的視頻串列中。我不知道為什么...所以我需要重置或清除 find_elements 之間的某些內容
driver.get('https://www.youtube.com/')
time.sleep(8)
items = driver.find_elements(By.XPATH, "//a[@id='thumbnail'][@class='yt-simple-endpoint inline-block style-scope ytd-thumbnail'][contains(@href, 'watch?v=')]")
for i in items:
url = i.get_attribute("href")
print(str(url))
rand = random.choice(items)
rand.click()
time.sleep(10)
# GET SUGGESTED VIDEO ON THE RIGHT
yt_right_pane_items = driver.find_elements(By.XPATH, "//a[@id='thumbnail'][@class='yt-simple-endpoint inline-block style-scope ytd-thumbnail'][contains(@href, 'watch?v=')]")
for i in yt_right_pane_items:
url = i.get_attribute("href")
print(str(url))
主頁的輸出:
https://www.youtube.com/watch?v=0YuC4ZJJI5c
https://www.youtube.com/watch?v=FyUIEU1qW1w&t=13147s
https://www.youtube.com/watch?v=H9-ekUCFCr0
https://www.youtube.com/watch?v=BoVAOpSiD_A
https://www.youtube.com/watch?v=lJqDZKAxOOY
https://www.youtube.com/watch?v=nJL1k37T6r8
https://www.youtube.com/watch?v=o1dhGnZIxfI
https://www.youtube.com/watch?v=y57jYUogWFs
https://www.youtube.com/watch?v=4V0e9IpzSfs
第二個輸出 = 第一個 find_elements 的視頻 第二個 find_elements 的視頻
https://www.youtube.com/watch?v=0YuC4ZJJI5c
https://www.youtube.com/watch?v=FyUIEU1qW1w&t=13147s
https://www.youtube.com/watch?v=H9-ekUCFCr0
https://www.youtube.com/watch?v=BoVAOpSiD_A
https://www.youtube.com/watch?v=lJqDZKAxOOY
https://www.youtube.com/watch?v=nJL1k37T6r8
https://www.youtube.com/watch?v=o1dhGnZIxfI
https://www.youtube.com/watch?v=y57jYUogWFs
https://www.youtube.com/watch?v=4V0e9IpzSfs
https://www.youtube.com/watch?v=jHa20EBYPU8
https://www.youtube.com/watch?v=ImnTNcqtvlY
https://www.youtube.com/watch?v=ppiIs2YoFqo
https://www.youtube.com/watch?v=P3TFt5oqDJU
https://www.youtube.com/watch?v=BisnRXb_sk0
https://www.youtube.com/watch?v=l5Pjhl1vgUw
https://www.youtube.com/watch?v=nvsZKNYwHt0
https://www.youtube.com/watch?v=L6VBHflOeuY
https://www.youtube.com/watch?v=1MPRbX7ACh8
在第二個 find_elements 上,我只想從被點擊的頁面中獲取新視頻。
uj5u.com熱心網友回復:
問題不是Selenium也不是- 它保留了這些鏈接但隱藏了list。YouTube
您xpath搜索所有鏈接 - 甚至隱藏 - 但它應該只搜索可見部分
//div[@id='columns']
完整的 xpath
//div[@id='columns']//a[@id='thumbnail'][@class='yt-simple-endpoint inline-block style-scope ytd-thumbnail'][contains(@href, 'watch?v=')]
如果你只想要SUGGESTED VIDEO ON THE RIGHT然后搜索
//div[@id='related']
完整的 xpath
//div[@id='related']//a[@id='thumbnail'][@class='yt-simple-endpoint inline-block style-scope ytd-thumbnail'][contains(@href, 'watch?v=')]
其他方法是使用set()洗掉重復元素
new = list( set(second_list) - set(first_list) )
duplicated = list( set(second_list) & set(first_list) )
它可能很有用,因為您可以在所有頁面的建議中重復。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/434329.html
標籤:Python python-3.x 硒 硒网络驱动程序
上一篇:如何將可迭代元素添加到串列
