簡體   English   中英

使用 Selenium 和 Python 查找網頁上的所有元素

[英]Find all elements on a web page using Selenium and Python

我正在嘗試使用Selenium瀏覽網頁並創建一組具有某些類名的所有元素,所以我一直在使用:

elements = set(driver.find_elements_by_class_name('class name'))

然而,在某些情況下,頁面上有數千個元素(如果我向下滾動),我注意到這段代碼只能找到頁面上的前 18-20 個元素(只有大約 14-16 個對我可見一次)。 我需要滾動,還是我做錯了什么? 有什么方法可以立即將我想要的 HTML 中的所有元素放入一個列表中,而不必在屏幕上直觀地看到它們?

這取決於您的網頁。 在向下滾動之前,只需查看 HTML 源代碼(或網絡日志)。 如果只有 18-20 個元素,則頁面延遲加載下一個項目(例如 Twitter 或 Instagram)。 這意味着,如果您到達網頁上的某個點,服務器只會呈現下一個項目。 否則將加載所有數千個項目,這將增加頁面大小、加載時間和服務器負載。

在這種情況下,您必須向下滾動到最后,然后獲取源代碼來解析所有項目。

可能您可以使用更高級的方法,例如將每個塊處理為一種用於分頁方法的頁面(例如,不說“轉到下一頁”而是說“向下滾動”)。 但我猜你是初學者,所以我會從簡單的向下滾動開始(例如滾動、等待、滾動……直到沒有新元素),然后獲取 HTML 並解析它。

暫無
暫無

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

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