我寫了很多刮板,但我不知道如何處理無限滾動。這些天大部分網站等,Facebook,Pinterest有無限的滾動。scle網站無限滾動
回答
你可以使用硒來取消像twitter或facebook這樣的無限滾動網站。
步驟1:使用PIP
pip install selenium
步驟2安裝硒:使用下面的代碼來自動無限滾動和提取源代碼
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import sys
import unittest, time, re
class Sel(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://twitter.com"
self.verificationErrors = []
self.accept_next_alert = True
def test_sel(self):
driver = self.driver
delay = 3
driver.get(self.base_url + "https://stackoverflow.com/search?q=stckoverflow&src=typd")
driver.find_element_by_link_text("All").click()
for i in range(1,100):
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(4)
html_source = driver.page_source
data = html_source.encode('utf-8')
if __name__ == "__main__":
unittest.main()
步驟3:如果需要,打印這些數據。
循環是否意味着我們向下滾動100次?其中100是隨機選擇的數字。是對的嗎? –
@satarupa你是對的循環向下滾動100次 –
大多數無限滾動的網站(如Lattyware筆記)也具有適當的API,並且您可能會更好地使用這種方式,而不是通過抓取。
但是如果你必須湊...
這類網站都使用JavaScript,當您到達頁面的底部,要求從網站的附加內容。所有你需要做的是找出額外的內容的URL,你可以檢索它。找出所需的URL可以通過檢查腳本,使用Firefox Web控制檯或使用debug proxy來完成。
例如,打開Firefox Web控制檯,關閉除Net之外的所有過濾器按鈕,然後加載要擦除的站點。您將在加載時看到所有文件。在瀏覽Web控制檯的同時滾動頁面,您將看到用於其他請求的URL。然後你可以自己請求這個URL,看看數據是什麼格式(可能是JSON),然後把它放到你的Python腳本中。
你能舉一個具體的例子來說明如何去做嗎? – tatsuhirosatou
我已經添加了一些更多的細節,希望它有幫助! – kindall
找到ajax源代碼的網址將是最好的選擇,但對某些網站來說可能很麻煩。或者,您可以使用QWebKit
之類的無頭瀏覽器從PyQt
發送鍵盤事件,同時從DOM樹中讀取數據。 QWebKit
有一個不錯的和簡單的API。
- 1. 訪問使用無限動態滾動的網站元素
- 2. 在網站中無限重複背景的視差滾動
- 3. JS React網站的最佳無限滾動工具/組件?
- 4. 使用python無限滾動的抓取網站
- 5. 在網站上爲無限滾動修剪圖像
- 6. 如何用'無限'滾動空間創建一個網站?
- 7. Jquery從其他網站無限滾動加載內容
- 8. 無限滾動無網格上的滾動條
- 9. 無限滾動
- 10. JQUERY - 滾動網站
- 11. 如何下載無限滾動網頁
- 12. 無限滾動網格和MVC
- 13. 網頁無限滾動下來
- 14. 手機網站將無法滾動
- 15. 移動網站滾動
- 16. 無限滾動+ iphone
- 17. Vue.js無限滾動
- 18. RelayJS無限滾動
- 19. Yii無限滾動
- 20. UIScrollView無限滾動?
- 21. React無限滾動
- 22. 無限滾動QListWidget
- 23. ViewPager - 無限滾動?
- 24. UIScrollView無限滾動
- 25. jQuery - 無限滾動
- 26. CellList無限滾動
- 27. 無限滾動UIPageViewController
- 28. Laravel無限滾動
- 29. NodeJS - 無限滾動
- 30. Onsenui - 無限滾動
這裏最好的選擇就是使用這些網站的API--到目前爲止,這將是最簡單和最可靠的選擇。除此之外,你將不得不處理JavaScript,這基本上意味着運行一個完整的瀏覽器 - 這樣的庫確實存在。 –
聽起來像一個模擬,你可以指向一些處理jscript的例子 –