2016-10-19 41 views
2

我想解析用戶滾動時加載的網站的數據。有元素的有限數量的,可以同時滾動,但是使用出現此只給出了第一部分(25出的112):要求返回的部分頁面

url = "http://url/to/website" 
response = requests.get(url) 
soup = BeautifulSoup(response.text) 

我怎麼能告訴request返回HTML之前,「滾動」?

編輯:顯然要求不這樣做,我可以在Python中使用什麼樣的解決方案?

+1

你也許可以模仿,當你通過HTTP滾動會發生什麼要求 –

回答

2

你應該知道的唯一的事情就是如何serverlet作品。

通常,onScrollonClick或任何其他事件將觸發AJAX request到服務器。而客戶端JavaScript將呈現那些返回(JSON/XML ...)所以你應該做的唯一事情就是重複那些AJAX請求到同一臺服務器來獲取這些數據。

例如,在瀏覽器中的動作會象下面這樣:

1. Enter url on browser 
> [HTTP GET REQUEST] http://url/to/website 

2. Scroll on the page 
> [AJAX GET] http://url/to/website/1 
> [javascript on front-end will process those data] 

3. Then, keeping scrolling on the page 
> [AJAX GET] http://url/to/website/2 
> [javascript on front-end will process those data] 

4. ... (and so on) 

問:如何使用Python來獲得這些數據?

答:一個簡單的方法是使用browser > inspect > network_tab來查找您在該頁面上滾動時發送的AJAX請求。並用python重複那些帶有相應標題的AJAX請求。

5

你不能。這個問題是基於對請求做什麼的誤解。它僅加載頁面的內容。無盡的滾動是由Javascript支持的,這些請求不會做任何事情。

你會需要一些瀏覽器自動化工具,如硒要做到這一點;或者找出滾動JS正在使用的Ajax端點並直接加載。

+0

謝謝你,我有點害怕這一點。我更新了我的問題以找到具體的解決方案 – CoMartel