有時候,我們天真無邪的使用urllib庫或Scrapy下載HTML網頁時會發現,我們要提取的網頁元素並不在我們下載到的HTML之中,盡管它們在瀏覽器里看起來唾手可得。
這說明我們想要的元素是在我們的某些操作下通過js事件動態生成的。舉個例子,我們在刷QQ空間或者微博評論的時候,一直往下刷,網頁越來越長,內容越來越多,就是這個讓人又愛又恨的動態加載。
爬取動態頁面目前來說有兩種方法
分析請求頁面
通過Selenium模擬瀏覽器獲取
小編不推薦使用方法二,原因很簡單,效率低,爬取少量頁面數據可以接受,如果我們獲取的頁面層次多數據量大,那么它的執行效率會死人的。。。。
分析很簡單,我們只需要打開了瀏覽器F12開發者模式,獲取它的js請求文件(除JS選項卡還有可能在XHR選項卡中,當然也可以通過其它抓包工具)
我們打開第一財經網看看,發現無法獲取元素的內容
打開Network,看下它的請求,這里我們只看它的js請求就夠了
將它的url放到瀏覽器看下
我們觀察url的規律可以看到每次末尾的url都自增1,這樣我們就可以重構請求來獲取數據,貼下代碼
這里的數值1584是小編手動試出來的,還有一種方法就是直接while循環,在判斷返回值,如果還有更好的方法,請告知下小編
有時候,一些網站所有的接口都進行了加密操作,我們無法解析js,就必須采用selenium+phantomjs進行獲取,具體使用請看另一篇。


