對於一些加密的動態網頁的數據採集,除了通過phantomjs還有沒有別的通用的方法?
最近在研究百度指數,以及微博的數據採集,發現他們的ajax請求的參數都是加密的。特別是百度指數每次請求相同數據的參數還是動態加密的,每次都不一樣,加密的演算法通過JavaScript實現,而js代碼是經過混淆的,而且是層層調用,不太好發現規律。
設想過有沒有一種比較好的方法能直接定位到處理加密的代碼,直接執行代碼解密,獲取參數,因為對js還是處於一個入門的狀態,不知道這種方法是否可行。。。
長效的方案,用Selenium Webdriver集群,配合Phantom無頭瀏覽器是比較可行的方案。
謝邀!
無論採用什麼混淆技術,最後都要在瀏覽器中把數字顯示出來,所以,如果採用抓包,然後模擬http消息的方式抓數據,題主說的問題都存在,挨個破解確實挺麻煩的,但是,如果直接從DOM中抓數據,題主說的那些問題都不是障礙。我寫的GooSeeker爬蟲是直接修改了瀏覽器內核,可以模擬人的操作,包括在百度指數圖表上移動滑鼠後抓取浮動顯示的數字。當他們要在瀏覽器顯示出來時,必然存在於DOM中,不管是html5還是svg圖,只要不是用特殊插件顯示的內容,抓取方法都一樣。
真正有挑戰的是百度指數數字的識別問題。
百度指數抓取要比淘寶指數難(不知道淘寶改版沒有 ),因為他們的數字用圖片顯示的。還不是普通的圖片,比如,12345,這串數字不是在圖片上挨著顯示的,而是在一張大背景圖上,好多亂碼,其中包含這5個數字,用css控制,把這5個數字按照順序「露」出來。這樣,OCR程序也犯難了。
本來去年夏天我們要給一科研單位解決這個問題,能解決,把css中的顯示位置數值也抓下來,根據css的定位,把數字小圖切下來,合一起交給ocr。圖、css參數等等都能用GooSeeker抓取下來。再開發一個拼裝程序就行了。
問題是是否值得去做。數據抓取就是這樣,只要有足夠投入,很多數據都能抓,是否值得去做?所以這個事情一直沒有做。
你可以找個軟體進行採集啊,比如我以前用的前嗅的ForeSpider軟體,就很好用。他自己有專利的js引擎,採集js動態網頁是沒有問題的,你可以試試,他們軟體現在也有免費版,你可以下個看看。
希望對你有幫助。
推薦閱讀:
※如何避免「用隱形鏈接」的反爬蟲技術?
※使用Hadoop能做哪些比較有趣的事情?
※python關於xpath的一個問題:如何提取某標籤下所有內容?
※如何處理python爬蟲ip被封?
※怎麼用python爬qq空間的說說列表並保存到本地?
TAG:JavaScript | Python | 爬蟲計算機網路 |