Python爬蟲學習,記一次抓包獲取js,從js函數中取數據的過程


昨天有小伙伴找我,新浪新聞的國內新聞頁,其他部分都是靜態網頁可以抓到,但是在左下方的最新新聞部分,不是靜態網頁,也沒有json數據,讓我幫忙抓一下。大概看了下,是js加載的,而且數據在js函數中,很有意思,就分享出來給大家一起看看!

抓取目標

Python爬蟲學習,記一次抓包獲取js,從js函數中取數據的過程

今天我們的目標是上圖紅框部分,首先我們確定這部分內容不在網頁源代碼中,屬於js加載的部分,點擊翻頁后也沒有json數據傳輸!

Python爬蟲學習,記一次抓包獲取js,從js函數中取數據的過程

但是發現有個js的請求,點擊請求,是一行js函數代碼,我們將其復制到json的視圖查看器中,然后格式化一下,看看結果

Python爬蟲學習,記一次抓包獲取js,從js函數中取數據的過程

Python爬蟲學習,記一次抓包獲取js,從js函數中取數據的過程

發現里面有可能存在我們需要的內容,比如url、title、intro這3個參數,猜測就是對應的新聞URL、標題、簡介

Python爬蟲學習,記一次抓包獲取js,從js函數中取數據的過程

只是其內容,需要在進行處理一下,我們寫到代碼中看看

開始寫代碼

先導入庫,因為最終需要從字符串中截取部分,所以用requests庫獲取請求,正則re匹配內容即可。然后我們先匹配出上述3項

Python爬蟲學習,記一次抓包獲取js,從js函數中取數據的過程

可以看到,url中存在 \ \,標題和簡介是以\ \ u4e09的形式存在,這些就是我們需要處理的下一步了!

先用replace函數剔除url中\ \,即可得到url,后面的\ \ u4e09則是unicode編碼,可以直接解碼得到內容,直接寫代碼了

Python爬蟲學習,記一次抓包獲取js,從js函數中取數據的過程

解碼用了eval函數,內容為u“ + unicode編碼內容 + “的形式即可解碼!

這樣,就取出了本頁的所有新聞和URL的相關內容,在外層加上循環,即可抓取所有的新聞頁,任務完成!

Python爬蟲學習,記一次抓包獲取js,從js函數中取數據的過程

后記

新浪新聞的頁面js函數比較簡單,可以直接抓到數據,如果是比較復雜的函數的話,就需要深入理解前端知識了,這也是為什么學爬蟲,需要學習前端知識的原因!

ps:上文所用的json查看器是第三方的網站,直接百度即可找到很多,當然也可以直接將上述抓包的內容修改,然后用json讀取數據也是可以的!

基本代碼沒有多少,如果有看不清楚的小伙伴,可以私信我獲取代碼或者一起研究爬蟲哦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM