網(wǎng)頁源代碼拿到后怎么使用 爬蟲爬取某個網(wǎng)站進(jìn)行個股分析時,源代碼關(guān)鍵數(shù)字被屏蔽,是因為JavaScript的原因嗎?要怎么破解?
爬蟲爬取某個網(wǎng)站進(jìn)行個股分析時,源代碼關(guān)鍵數(shù)字被屏蔽,是因為JavaScript的原因嗎?要怎么破解?蠻有意思的,搞得我很想去看看。關(guān)鍵數(shù)字被屏蔽了,可以看看渲染后的html是否為數(shù)字,還是一串uni
爬蟲爬取某個網(wǎng)站進(jìn)行個股分析時,源代碼關(guān)鍵數(shù)字被屏蔽,是因為JavaScript的原因嗎?要怎么破解?
蠻有意思的,搞得我很想去看看。關(guān)鍵數(shù)字被屏蔽了,可以看看渲染后的html是否為數(shù)字,還是一串unicode編碼,也有可能是一串圖片(很少有公司有實力做到這一步)。基本是下面幾類:
1:字體庫加密,在我的文章里有過一篇文章說的字體庫加密的破解可以對照下。驗證方式是點開源代碼看看是不是一串unicode編碼。
2:圖片,使用圖片拼接數(shù)學(xué)在百度的指數(shù)上面有應(yīng)用,這個麻煩一點點。用f12看下樣式就好。
3:Js動態(tài)控制css實現(xiàn)渲染。汽車之家的m站是這種,就是設(shè)置某個css樣式背景是某個字符,也可以通過f12看看css就可以確定了。
至于反爬,感覺沒點真功夫比較懸,我估計是第一種,畢竟簡單。這里并不是不想教方法,因為內(nèi)容有點多,我一下子說不完,后面想看的可以關(guān)注我。第一種我的文章已經(jīng)寫了。
怎么獲取網(wǎng)頁源代碼中的文件?
網(wǎng)頁源代碼是父級網(wǎng)頁的代碼網(wǎng)頁中有一種節(jié)點叫iframe,也就是子Frame,相當(dāng)于網(wǎng)頁的子頁面,他的結(jié)構(gòu)和外部網(wǎng)頁的結(jié)構(gòu)完全一致,框架源代碼就是這個子網(wǎng)頁的源代碼。另外,爬取網(wǎng)易云推薦使用selenium,因為我們在做爬取網(wǎng)易云熱評的操作時,此時請求得到的代碼是父網(wǎng)頁的源代碼,這時是請求不到子網(wǎng)頁的源代碼的,也得不到我們需要提取的信息,這是因為selenium打開頁面后,默認(rèn)是在父級frame里面的操作,而此時如果頁面中還有子frame,它是不能獲取到子frame里面的節(jié)點的,這是需要用swith_to.frame()方法來切換frame,這時請求得到的代碼就從網(wǎng)頁源代碼切換到了框架源代碼,然后就可以提取我們所需的信息。
如何用python爬取ajax網(wǎng)頁的內(nèi)容?
我是直接看js源碼,分析完,然后爬的。例如看頁面是用Ajax請求一個JSON文件,我就先爬那個頁面,獲取Ajax所需的參數(shù),然后直接請求JSON頁,然后解碼,再處理數(shù)據(jù)并入庫。如果你直接運行頁面上所有js(就像瀏覽器做的那樣),然后獲取最終的HTML DOM樹,這樣的性能非常地糟糕,不建議使用這樣的方法。因為Python和js性能本身都很差,如果這樣做,會消耗大量CPU資源并且最終只能獲得極低的抓取效率。