如何用python抓取js生成的數據 - SegmentFault
如何用python抓取js生成的數據
想寫一個爬蟲,但是需要抓去的的數據是js生成的,在源代碼里看不到,要怎么才能抓到呢? 最好是用python
7 個回答
如果對抓取的性能沒有什么要求的話, 嘗試一下selenium或者watir吧.
web自動化測試腳本用好了可以做很多事情.
利用你的瀏覽器執行好js, 然后再從dom里面取數據.另外一個情況, 如果你知道js是通過ajax或者api取數據的, 直接去抓數據源, 得到的不是json就是xml, 然后處理數據吧
基於webkit的http://phantomjs.org/,寫js就行。
用python調它,用起來很爽。對於JS生成的數據,你是沒有辦法獲取的。除非直接遍歷dom還是有可能……
一種辦法是可以考慮用userscript,獲取數據然后post到服務器等就隨你自己的喜歡了
還有一種辦法(假設是在win32),可以使用com組件調用IE然后獲取動態生成的dom樹,然后再做處理
當年試過改firefox的程序來做這個,不過也很麻煩
當然,你也可以用python什么自己實現一套瀏覽器和js引擎,那么這些數據肯定是你自己的了,不過還不如直接改或者用com組件
但是你說的爬蟲爬取js生成的,那是沒有辦法的:(不管怎么樣,一定要實現dom樹,要讓js能執行,那么就相當於你要實現一套簡單的瀏覽器了
可以試着用 http://jeanphix.me/Ghost.py/ , http://code.google.com/p/pyv8/ 獲得 JS 執行后的 dom。
目前認為比較好的一個方案是采用python+gtk+pywebkit,相當於基於webkit自己寫一個定制的瀏覽器,這樣可以在網頁中插入自己的js,遍歷dom等都是非常容易的。這個組合在ubuntu下還是非常容易搭建的。
sudo apt-get install python-gtk python-webkit,即可。