2017-07-04 84 views
-1

我已經使用VBA結合硒編寫了一個腳本,以便從網頁中獲取所有公司鏈接,直到滾動向下才顯示所有鏈接。但是,當我運行我的腳本時,我只有20個鏈接,但總共有1000個鏈接。我聽說可以在代碼之間完成執行javascript函數的這種類型的任務。在這一點上,我不知道如何將它放在我的腳本中。以下是我試過到目前爲止:如何使用VBA向下滾動使用Selenium的網頁

Sub Testing_scroll() 

Dim driver As New WebDriver 
Dim posts As Object, post As Object 

driver.Start "chrome", "http://fortune.com/fortune500" 
driver.get "/list/" 

driver.execute_script ("window.scrollTo(0, document.body.scrollHeight);") --It doesn't support here 

Set posts = driver.FindElementsByXPath("//li[contains(concat(' ', @class, ' '), ' small-12 ')]") 

For Each post In posts 
    i = i + 1 
    Cells(i, 1) = post.FindElementByXPath(".//a").Attribute("href") 
Next post 

End Sub 
+0

我認爲如果您的Excel版本支持它,Power Query可以自動執行此操作,或者對於舊版本,動態Web查詢可以自動執行https://www.vertex42.com/News/excel-web-query.html – Slai

回答

0

根據附帶SeleniumBasic的例子,你應該使用

driver.ExecuteScript("window.scrollTo(0, document.body.scrollHeight);") 

不是「driver.execute_script」,這是蟒蛇相當於從the previous solution I gave you的: )你將不得不以相同的方式循環,直到頁面上有所有1000個鏈接。

+0

感謝George McConnon,爲你的答案。它部分解決了我現在面臨的問題。不過,我正在努力創建一個循環來完成這個過程。 – SIM

+0

我已經知道了。 – SIM

+0

幹得好! :)你應該在這裏添加你的解決方案,以便其他人可以從你的智慧中受益:D – NotInventedHere

相關問題