我正在嘗試使用 Selenium 從 Instagram 抓取資料,但我需要我的程式來完全加載頁面,以便它可以實際訪問資料。
我正在遍歷一個帶有 url 的串列,并希望定位帖子和關注者的數量。所以它看起來像:
users = []
for i in urls:
driver.get(i)
sleep(1) #even with this sleep, it doesn't alway load enough of the page and I'd prefer not to sleep too long on every page
header = driver.find_elements(By.CLASS_NAME, "_aa_6")
number = header[0].text
number = int(number.replace(f"\nposts",""))
if number >= 10:
followers = header[1].text
tup = (url, followers)
users.append(tup)
它有時適用于 1 秒的睡眠,但它會受到打擊或錯過。我想知道 Selenium 是否有某種方法可以強制加載頁面。但是,我也不想完全加載每個頁面,因為它不必加載 instagram 圖片。
我會做一個 while 回圈來強制標頭的長度,但我想知道 Selenium 是否提供了更好的解決方案,或者 Selenium 是否不是此類任務的最佳工具?
uj5u.com熱心網友回復:
你只需要使用顯式等待而不是更糟糕的time.sleep()。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
header = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CLASS_NAME, "_aa_6")))
[...]
它將等到元素被定位(也就是加載)。我將其設定為最多等待 30 秒,但當然可以對其進行修改。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/506704.html
上一篇:無法獲取文本值
