Python爬取妹子,哇!太多了,看不過來了,我一個(gè)G的硬盤要滿了

淘女郎爬蟲,可動(dòng)態(tài)抓取淘女郎的信息和照片。

分享之前我還是要推薦下我自己建的Python開發(fā)學(xué)習(xí)群:628979297,群里都是學(xué)Python開發(fā)的,如果你正在學(xué)習(xí)Python ,小編歡迎你加入,今天分享的這個(gè)案例已經(jīng)上傳到群文件,大家都是軟件開發(fā)黨,不定期分享干貨(只有Python軟件開發(fā)相關(guān)的),包括我自己整理的一份2018最新的Python進(jìn)階資料和高級開發(fā)教程,歡迎進(jìn)階中和進(jìn)想深入Python的小伙伴。

需要額外安裝的第三方庫

requests

pip install requests

pymongo

pip install pymongo

模塊功能

TaoLady.py: 負(fù)責(zé)發(fā)送POST請求和抓取個(gè)人信息和圖片地址并保存到MongoDB中。

Download_Pic.py: 負(fù)責(zé)從MongoDB中抽取出淘女郎照片的網(wǎng)址,并下載。

原理

淘女郎的網(wǎng)站使用了AJAX技術(shù)。通過在后臺與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,AJAX 可以使網(wǎng)頁實(shí)現(xiàn)異步更新。這意味著可以在不重新加載整個(gè)網(wǎng)頁的情況下,對網(wǎng)頁的某部分進(jìn)行更新。這意味著通過直接抓取網(wǎng)頁源代碼然后分析出信息的方式是行不通的,因?yàn)榫W(wǎng)站是動(dòng)態(tài)加載的,直接抓取的方式只能抓到網(wǎng)頁原始的源代碼,并不能抓到動(dòng)態(tài)加載出的淘女郎的信息。

對于這一類網(wǎng)站,一般有兩種抓取辦法:

利用selenium庫來模擬瀏覽器的用戶行為,讓服務(wù)器以為是真正的用戶在瀏覽網(wǎng)頁,從而獲得完整的網(wǎng)頁源代碼

利用Chrome等瀏覽器自帶的分析工具,對網(wǎng)頁的Network進(jìn)行監(jiān)控,分析出數(shù)據(jù)交換的API,從而利用API抓取到數(shù)據(jù)交換的JSON數(shù)據(jù),從而進(jìn)行抓取。

一般來講,第一種方法速度較慢,并且運(yùn)行時(shí)占用較多的系統(tǒng)資源,所以,條件允許的情況下,盡量使用第二種方法。

在Chrome瀏覽器中打開淘女郎的主頁https://mm.taobao.com/search_tstar_model.htm? 按F12切換到開發(fā)者模式,在Network一欄選擇XHR可以看到目前沒有網(wǎng)絡(luò)活動(dòng),但是,在網(wǎng)頁中按下一頁的時(shí)候,會出現(xiàn)一個(gè)POST活動(dòng),當(dāng)再次按下下一頁的時(shí)候,會再次出現(xiàn)一次該活動(dòng),所以,可以斷定,數(shù)據(jù)交換使用的就是這個(gè)API。然后我們再來對比這兩次請求,在Headers框的FromData欄中,可以看到兩次請求的差別在currentPage的不同,一個(gè)是2,一個(gè)是3,這說明,要想得到第幾頁的數(shù)據(jù),這個(gè)currentPage的值就是多少。所以我們就根據(jù)這個(gè),來編寫請求,從而得到全部淘女郎信息的JSON文件。

發(fā)送請求,得到JSON數(shù)據(jù),將其加工并轉(zhuǎn)化為Python的字典類型返回

連接到MongoDB, 將信息保存

抽取出照片的網(wǎng)址,下載,保存在pic文件夾中

爬完了,成果斐然啊

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容