簡體   English   中英

Selenium 無法在 Instagram 上獲取所有元素

[英]Selenium Can't Get All Element on Instagram

我正在使用 Python selenium 創建一個腳本來抓取 Instagram 用戶帖子。 如果用戶有 62 個帖子,我想獲得所有 62 個帖子。

我嘗試向下滾動直到所有帖子加載並使用 xpath 及其作品獲取元素/帖子。 但只有 29 個元素/帖子,而不是全部 62 個元素/帖子。

    driver.get("https://instagram.com/celmirashop/")

    #scroll until all post loaded
    scroll()
    wait = WebDriverWait(driver, 15)
    wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "div.eLAPa")))

    time.sleep(30)

    #getting list cards of posts
    list_cards = driver.find_elements_by_xpath("//*[@class='v1Nh3 kIKUG  _bz0w']")
    print(len(list_cards))

如果用戶有 62 個帖子,我想獲得 62 個(全部)帖子的元素

滾動 instagram 時,將顯示新的 12 張圖片,但 instagram 將刪除 12 張通過的圖片。 我通過在滾動時(每次向下滾動)保存 12 個圖像找到了解決方案。 所以在Instagram刪除傳遞的12張圖片之前,我已經將這些圖片保存在variabel上

driver.get("https://instagram.com/celmirashop/")


semua_url_lengkap = []
semua_url_post = []
nomor=1
for i in range(50):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    print(nomor)
    nomor+=1
    #mendapatkan list tiap cards update status
    article = driver.find_element_by_tag_name("article")
    list_cards = article.find_elements_by_tag_name("a")

    for item in list_cards:

        url_lengkap=item.get_attribute("href")
        semua_url_lengkap.append(url_lengkap)

        segmen = url_lengkap.rsplit('/', 2)
        semua_url_post.append(segmen[1])


print(len(semua_url_post))
print(semua_url_post)

他們設計應用程序的方式很難被抓取。 元素是延遲加載的,因此當您滾動時,某些元素也可能會消失。

我會說使用 xpath 通用且不變,例如//a//img ,因為它們會將 class 名稱再次更改為隨機名稱。

另外,既然您已經有了滾動的方法,請從頭開始。 記錄所有元素並再滾動一些,然后再次記錄並刮掉一些。 循環,直到找到頁面元素的結尾,例如//footer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM