淘女郎爬蟲巧号,可動態(tài)抓取淘女郎的信息和照片。
分享之前我還是要推薦下我自己建的Python開發(fā)學習群:628979297姥闭,群里都是學Python開發(fā)的丹鸿,如果你正在學習Python ,小編歡迎你加入棚品,今天分享的這個案例已經(jīng)上傳到群文件靠欢,大家都是軟件開發(fā)黨,不定期分享干貨(只有Python軟件開發(fā)相關的)铜跑,包括我自己整理的一份2018最新的Python進階資料和高級開發(fā)教程门怪,歡迎進階中和進想深入Python的小伙伴。
需要額外安裝的第三方庫
requests
pip install requests
pymongo
pip install pymongo
模塊功能
TaoLady.py: 負責發(fā)送POST請求和抓取個人信息和圖片地址并保存到MongoDB中锅纺。
Download_Pic.py: 負責從MongoDB中抽取出淘女郎照片的網(wǎng)址掷空,并下載。
原理
淘女郎的網(wǎng)站使用了AJAX技術囤锉。通過在后臺與服務器進行少量數(shù)據(jù)交換坦弟,AJAX 可以使網(wǎng)頁實現(xiàn)異步更新。這意味著可以在不重新加載整個網(wǎng)頁的情況下嚼锄,對網(wǎng)頁的某部分進行更新减拭。這意味著通過直接抓取網(wǎng)頁源代碼然后分析出信息的方式是行不通的蔽豺,因為網(wǎng)站是動態(tài)加載的区丑,直接抓取的方式只能抓到網(wǎng)頁原始的源代碼,并不能抓到動態(tài)加載出的淘女郎的信息修陡。
對于這一類網(wǎng)站沧侥,一般有兩種抓取辦法:
利用selenium庫來模擬瀏覽器的用戶行為,讓服務器以為是真正的用戶在瀏覽網(wǎng)頁魄鸦,從而獲得完整的網(wǎng)頁源代碼
利用Chrome等瀏覽器自帶的分析工具宴杀,對網(wǎng)頁的Network進行監(jiān)控,分析出數(shù)據(jù)交換的API拾因,從而利用API抓取到數(shù)據(jù)交換的JSON數(shù)據(jù)旺罢,從而進行抓取。
一般來講绢记,第一種方法速度較慢扁达,并且運行時占用較多的系統(tǒng)資源,所以蠢熄,條件允許的情況下跪解,盡量使用第二種方法。
在Chrome瀏覽器中打開淘女郎的主頁https://mm.taobao.com/search_tstar_model.htm? 按F12切換到開發(fā)者模式签孔,在Network一欄選擇XHR可以看到目前沒有網(wǎng)絡活動叉讥,但是窘行,在網(wǎng)頁中按下一頁的時候,會出現(xiàn)一個POST活動图仓,當再次按下下一頁的時候罐盔,會再次出現(xiàn)一次該活動,所以透绩,可以斷定翘骂,數(shù)據(jù)交換使用的就是這個API。然后我們再來對比這兩次請求帚豪,在Headers框的FromData欄中碳竟,可以看到兩次請求的差別在currentPage的不同,一個是2狸臣,一個是3莹桅,這說明,要想得到第幾頁的數(shù)據(jù)烛亦,這個currentPage的值就是多少诈泼。所以我們就根據(jù)這個,來編寫請求煤禽,從而得到全部淘女郎信息的JSON文件铐达。
發(fā)送請求,得到JSON數(shù)據(jù)檬果,將其加工并轉化為Python的字典類型返回
連接到MongoDB瓮孙, 將信息保存
抽取出照片的網(wǎng)址,下載选脊,保存在pic文件夾中
爬完了杭抠,成果斐然啊