2017-09-26 63 views
-1

我需要推文的所有回覆/評論。相關的question有一個答案,它需要下載太多的數據,然後在交叉匹配後丟棄它們,由於速率限制,我不可能這樣做。 我試圖通過首先使用python加載鳴叫url來刮掉頁面。要滾動頁面,我嘗試使用硒web驅動程序。但我在第一頁仍然只收到回覆。出於某種原因,滾動不起作用。我試過這些1,2,3,4的方法,但沒有在這種情況下工作。使用Selenium進行滾動不起作用

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 

driver = webdriver.Firefox() 
driver.get("https://twitter.com/neiltyson/status/912299342559694848") 

for in xrange(10): 
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 
    print('height:{}'.format(driver.execute_script("return document.body.scrollHeight"))) 
    time.sleep(3) 

我注意到,該高度一次迭代後不會改變。

+0

它是分頁或無限滾動?你能分享一個關於你的特定問題的最小,完整和可驗證的例子嗎? – ivan7707

+0

@ ivan7707,我試圖按照另一個SO問題中的建議無限滾動,但它永遠不會完成!以不同的滾動重複次數,我可以得到相同的結果。我想滾動不起作用,因爲評論是加載在頁​​面的另一個主體? – Rakib

+0

感謝您更新問題。見下面的答案。 – ivan7707

回答

0

我現在有Python3正在運行,所以我將xrange更改爲範圍來測試它。

試試這個(我的作品):

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 

driver = webdriver.Firefox() 
driver.get("https://twitter.com/neiltyson/status/912299342559694848") 

page = driver.find_element_by_tag_name('body') 

for i in range(10): 
    page.send_keys(Keys.PAGE_DOWN) 
    time.sleep(3) 
+0

謝謝@ ivan7707。它可以滾動。但在幾段時間後,twitter停止提供下一個回覆。如果我將頁面保存爲html文件並在瀏覽器中打開,我會看到錯誤消息「加載似乎需要一段時間。」 Twitter可能會超出容量或遇到暫時的呃逆。「我如何檢測它?當它發生時,再試一次?我試圖增加睡眠時間,但沒有幫助。 – Rakib

+0

這是完全不同的問題[和似乎是Twitter的問題](https://twittercommunity.com/t/does-anybody-keep-getting-the-error-message-loading-tweets-seems-to-be-服用-A-而/ 8452)。上面的代碼爲我滾動輸入範圍內的次數(回答你最初的問題),沒有問題。 – ivan7707

+0

如果投了票,請解釋。代碼起作用。 – ivan7707