在使用find_elements的過程中發(fā)現(xiàn),有時候比較快,有時候非常慢,慢的時候可以達(dá)到幾分鐘,實在不能忍受,必須要解決。
后來看到國外一片文章(抱歉地址忘記了)說,find_elements慢的原因是頁面上有很多ajax的請求,默認(rèn)模式下會等待這些ajax的加載完成后才執(zhí)行,所以阻塞了find_elements的執(zhí)行,如果ajax一直在加載中就會一直等待直到超時。所以要解決這個問題的辦法很簡單,強制修改默認(rèn)等待時間即可,像下面這樣:
driver.implicitly_wait(180)
driver.get(url)
...
driver.implicitly_wait(0.1)
elements=driver.find_elements(By.XPATH, xpath)
...
實際上find_elements不需要等待ajax的加載完成,等待時間甚至可以設(shè)置為0,我還是溫柔一點設(shè)置為0.1。
記得有文章說設(shè)置pageLoadStrategy為eager也可以解決這個問題,但這個畢竟需要修改driver的options,不能中途修改,不夠靈活放棄。文章來源:http://www.zghlxwxcb.cn/news/detail-770408.html
另外selenium的find_elements本來也比較慢,如果要追求解析速度,還可以使用第三方的xpath解析器,比如說lxml,但這些第三方解析器不能判斷元素是否可見等等和瀏覽器相關(guān)的判斷,使用有局限,作為純粹的xpath搜索還是不錯的。(我原來就使用lxml,因為要判斷元素是否可見,只好放棄)文章來源地址http://www.zghlxwxcb.cn/news/detail-770408.html
到了這里,關(guān)于selenium的find_elements非常慢的解決辦法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!