我正在用 python 撰寫一個腳本來訪問一個顯示新 YouTube 視頻的 url,我想找到一個視頻說它是“3 分鐘前”上傳的,然后在我的控制臺中列印一些東西。分鐘前的例子
我不久前發現了這段 Javascript 代碼,但我不確定這是否可以翻譯成 Python 代碼。它會查找從 3 分鐘及以下上傳的視頻,這意味著如果視頻是在 2、1 分鐘或幾秒鐘前上傳的,它會點擊它。
var Link = iimGetLastExtract(2);
if (Link.indexOf("&") > -1) Link = Link.split("&")[0];
if (iimGetLastExtract(1).trim() == "2 minutes ago" || iimGetLastExtract(1).trim() == "1 minute ago" || iimGetLastExtract().indexOf("second") > -1)
有誰知道我如何在 Python 中做到這一點?我的代碼在下面(不作業,因為我不知道該怎么做)。
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
find_timeago = driver.find_element(By.XPATH, '//*[@id="metadata-line"]/span[2]')
while True:
if find_timeago == "3 minutes ago":
print('found video from 3 mins ago')
elif find_timeago == "1 minute ago":
print('found video from 3 mins ago')
elif find_timeago == "seconds ago":
print('found video from seconds ago')
else:
time.sleep(2)
driver.refresh()
uj5u.com熱心網友回復:
如果您的 js 代碼是正確的,您可以簡單地使用它而無需將其轉換為 python
js代碼
var Link = iimGetLastExtract(2);
if (Link.indexOf("&") > -1) Link = Link.split("&")[0];
if (iimGetLastExtract(1).trim() == "2 minutes ago" || iimGetLastExtract(1).trim() == "1 minute ago" || iimGetLastExtract().indexOf("second") > -1){
return iimGetLastExtract(1).trim()}
蟒蛇代碼
x = driver.execute_script(js_code)
print(x)
x 應該保持任何被評估為正確的值
uj5u.com熱心網友回復:
如果您查找跨度的代碼是正確的,那么您應該使用的代碼是
find_timeago = driver.find_element(By.XPATH, '//*[@id="metadata-line"]/span[2]').text
代替
find_timeago = driver.find_element(By.XPATH, '//*[@id="metadata-line"]/span[2]')
PS 你幾乎總是希望結果后面有 .text 或 .find_element
而且(盡管我不了解 YouTube),您不需要使用 selenium,帶有標頭的請求幾乎總是足夠的。
uj5u.com熱心網友回復:
try:
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,'//*[@id="metadata-line"]/span[2 and text()="3 minutes ago"]')))
print('3 minutes ago')
except Exception as e:
print(str(e))
應該等待元素或拋出錯誤
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/488597.html
標籤:Python python-3.x 硒 硒网络驱动程序
