Python爬取妹子,哇!太多了,看不過來了,我一個G的硬碟要滿了
02-08
淘女郎爬蟲,可動態抓取淘女郎的信息和照片。
需要額外安裝的第三方庫
- requests
pip install requests
- pymongo
pip install pymongo
模塊功能
- TaoLady.py: 負責發送POST請求和抓取個人信息和圖片地址並保存到MongoDB中。
- Download_Pic.py: 負責從MongoDB中抽取出淘女郎照片的網址,並下載。
原理
淘女郎的網站使用了AJAX技術。通過在後台與伺服器進行少量數據交換,AJAX
可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。這意味著通過直接抓取網頁源代碼然後分析出信息的方式是行不通的,因為網站是動態載入的,直接抓取的方式只能抓到網頁原始的源代碼,並不能抓到動態載入出的淘女郎的信息。對於這一類網站,一般有兩種抓取辦法:
- 利用selenium庫來模擬瀏覽器的用戶行為,讓伺服器以為是真正的用戶在瀏覽網頁,從而獲得完整的網頁源代碼
- 利用Chrome等瀏覽器自帶的分析工具,對網頁的Network進行監控,分析出數據交換的API,從而利用API抓取到數據交換的JSON數據,從而進行抓取。
一般來講,第一種方法速度較慢,並且運行時佔用較多的系統資源,所以,條件允許的情況下,盡量使用第二種方法。
在Chrome瀏覽器中打開淘女郎的主頁https://mm.taobao.com/search_tstar_model.htm?
按F12切換到開發者模式,在Network一欄選擇XHR可以看到目前沒有網路活動,但是,在網頁中按下一頁的時候,會出現一個POST活動,當再次按下下一頁的時候,會再次出現一次該活動,所以,可以斷定,數據交換使用的就是這個API。然後我們再來對比這兩次請求,在Headers框的FromData欄中,可以看到兩次請求的差別在currentPage的不同,一個是2,一個是3,這說明,要想得到第幾頁的數據,這個currentPage的值就是多少。所以我們就根據這個,來編寫請求,從而得到全部淘女郎信息的JSON文件。發送請求,得到JSON數據,將其加工並轉化為Python的字典類型返回
連接到MongoDB, 將信息保存
抽取出照片的網址,下載,保存在pic文件夾中
爬完了,成果斐然啊
推薦閱讀:
※用python爬拉鉤網關於『數據分析』工作的信息為什麼都是空的?
※基於 Python 的中文分詞方案那種比較好?
※python中的賦值,什麼時候是傳值什麼時候是傳址?
※如何去尋找網路爬蟲的需求?
※Python數據挖掘實踐—決策樹