如何爬取Ajax數(shù)據(jù)),針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。
站在用戶的角度思考問題,與客戶深入溝通,找到交口網(wǎng)站設(shè)計(jì)與交口網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋交口地區(qū)。
關(guān)于Ajax:其實(shí)現(xiàn)在很多網(wǎng)頁不是一次加載完。而是邊瀏覽邊加載。像今日頭條中的圖片,看完加載的部分,再往下滑動(dòng),又加載出來一些圖片,而url并沒有變化,此時(shí),頁面加載就是Ajax加載。他的原理同樣是發(fā)送請(qǐng)求,解析內(nèi)容,渲染頁面,但是他保證了頁面的不刷新,url不改變。但是頁面卻在更新數(shù)據(jù)。
1、分析Ajax
首先打開今日頭條的網(wǎng)頁,在搜索欄輸入街拍,切換到開發(fā)者模式(F12)
點(diǎn)擊XMR,因?yàn)锳jax在底層是實(shí)現(xiàn)了XmlHttpRequest對(duì)象,簡(jiǎn)寫XMR,
所以在XMR下都是Ajax請(qǐng)求。
再次刷新下頁面,繼續(xù)往下滑,我們可以看到有一些請(qǐng)求:
分析一下Request URL,我們發(fā)現(xiàn)其中只有offset參數(shù)發(fā)生了改變。
其他的參數(shù)我們寫成一樣的就可以了。
這樣我們就可以構(gòu)造一個(gè)get_html()方法,實(shí)現(xiàn)獲取到頁面如下。
如果你前面的文章都看了,那么理解這個(gè)方法是沒有難度的。
2、找到圖片的地址
知道了圖片在哪里,我們就寫個(gè)get_image_url()方法,來獲取到圖片的連接。
這里說一下,json數(shù)據(jù)上一篇有講如何獲取值:數(shù)據(jù)的存儲(chǔ)(一)
3、下載圖片并分類保存實(shí)現(xiàn)
這里需要說一下:
os.chdir()是改變當(dāng)前的路徑,因?yàn)槲矣玫氖荖otepad++,所以需要修改一下。
不然圖片會(huì)存在安裝Notepad++的位置。
os.path.exists()存在返回True,否則相反。
os.mkdir()是創(chuàng)建一個(gè)文件夾svse_image()方法
用md5加密實(shí)現(xiàn)圖片名不一樣
下載圖片在以前的文章也講過:python第二大神器requests
4、集中整合,實(shí)現(xiàn)多進(jìn)程下載即可
實(shí)現(xiàn)多進(jìn)程,需要導(dǎo)入Pool庫
from multiprocessing.pool import Pool
如果前面的文章都看了,這篇文章應(yīng)該沒有難度。重要的是了解Ajax的分析。如何去找。
最后上一下效果圖:
關(guān)于如何爬取Ajax數(shù)據(jù))問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。