Python3--妹子圖實戰
這個專案是我自己想做的,我並沒有自行去看其他人的部落格,只是單純有這個想法.
注:本文使用的模組不多,思路也很簡單.幾乎都是鏈式爬取的,也可以叫做是深度爬取,即是一個連結接著下一個連結!
等你們看完程式碼,你們都會驚訝,這麼簡單!!!!
哈哈,是的!!
廢話不多說,直接上步驟!
1.毫不遲疑就是分析網站的結構啦:
首先點進去開啟首頁,點進去第一個套圖的網址,
發現,第一張圖片的連結是:http://www.mzitu.com/130071,而最後一張是http://www.mzitu.com/130071/49
顯然是以http://www.mzitu.com/130071就是圖片合集的下標0了!找到這個就好辦了,我們再次分析圖片的結尾下標!結尾下標是:http://www.mzitu.com/130071/49,一共50張!
然後在去分析下一組這個url,發現一個更大的驚喜.
它的連結是:http://www.mzitu.com/130023,而對應首頁上的第二個套圖連結!
分析完這個就好辦了,那麼我現在有思路了
說下,首先,這個網站的連結分佈類似於火車節的那種,只要你找到頭,就能通過頭一直查詢下去,直到網站的底部.
思路:
1.開啟一個套圖的URL(頭),解析出這個網頁內部的img圖片地址,下載這個img圖片.
2.讓其尋找下一頁的url!再次開啟,下載,再次尋找下一頁的url....以此類推!直到找到網站的底部位置!
但是問題來了,該怎麼去實現呢?
來一串虛擬碼:
def Get_thelink_and_next_link(url):
開啟url,獲取網頁呈現後的結果.
解析出三個重要資訊:
1.這個頁面的妹子圖連結.
2.下一頁的妹子圖連結.
3.解析出妹子圖的名稱(這個在儲存有用.)
下載 妹子圖片連結
儲存到本地 記得把妹子圖的名稱加上.
一直重複
那麼開始!!!
首先匯入我們所需要的庫檔案.
我這裡是通過requests這個第三方庫來實現這個程式碼.
import requests#開啟網頁,進行下載時所用
import re#解析時用
from requests.exceptions import ConnectionError,HTTPError#捕捉錯誤
我們定義了函式,get_links_img()
裡面的功能包括,開啟網頁並且解析出剛才說的三個重要的資訊.
圖片的連結
該頁面的下一頁
妹子圖的名稱
我這裡是完全通過re模組來去解析的.然後注意下那個Splite(),這個函式就是解析下一頁的url裡面帶上的雙引號""!
解析過後便是提示和下載圖片
我們在這用requests.get()開啟剛剛解析出的圖片連結,然後獲取這個圖片連結的二進位制.
通過檔案讀寫的方式寫入到本地.
自此,整個函式的功能執行差不多執行完畢.
還差最最關鍵的一步,就是返回已經解析好的下一頁的連結.
為什麼要返回?
因為返回才能執行爬取下一頁的功能!
有很多人可能想到我這樣的程式碼結構,會用遞迴函式去實現爬取.
這裡我得誇你,真的,你能想到遞迴,就意味著你能想到比遞迴更好的解決這個函式執行的方法.
我一開始就是使用遞迴,然後程式越跑越慢,執行效率極其低下.
然而,網際網路是多麼得偉大,我嘗試去查詢解決方案.終於讓我找到了.
看圖!
現在知道為什麼要返回下一頁的連結了吧.
簡單解析下:
url = 連結
while url:#如果url能用,那麼我就傳入到下面那個函式
url = get_links_and_img(url)
get_links_and_img()返回的這個url是能用的,我就在再次傳入到get_links_and_img(),如果不能用就直接停止.
然後執行結果...
怎麼樣?是不是很簡單?
了了70行程式碼,一個非常簡單的爬蟲就完成了..
其實爬蟲學的不是方法,而是思路.我個人認為,一個網站怎樣爬取,不是看你怎麼爬,而是看這個網站的佈局.根據網站的佈局來進行程式碼編輯.
爬蟲怎麼去學才能學好?
我個人給出的觀點是:與其在那看視訊學習,不如自己去實踐一番.動手才是王道.
如果你也喜歡爬蟲,如果你也喜歡技術,那麼歡迎你加入我們的群,我們歡迎熱愛技術的你
群號碼:749511386
謝謝支援!!
相關文章
- Scrapy框架爬取海量妹子圖框架
- scrapy 也能爬取妹子圖?(5)
- Python Selenium+PhantomJs 爬煎蛋妹子圖PythonJS
- 教你用Python爬取妹子圖APPPythonAPP
- 爬蟲福利----妹子圖網MM批量下載爬蟲
- 【matplotlib 實戰】--餅圖
- 【matplotlib 實戰】--柱狀圖
- 【matplotlib 實戰】--雷達圖
- 【matplotlib 實戰】--箱型圖
- 【matplotlib 實戰】--面積圖
- 爬蟲福利二 之 妹子圖網MM批量下載爬蟲
- Node.js爬取妹子圖-crawler爬蟲的使用Node.js爬蟲
- 老司機帶你用python來爬取妹子圖Python
- 內涵妹子
- ElasticSearch實戰系列七: Logstash實戰使用-圖文講解Elasticsearch
- flutter-簡單實現找妹子自定義viewFlutterView
- 【matplotlib 實戰】--堆疊面積圖
- Tableau實戰 貨架圖分析(四)
- 圖卷積實戰——文字分類卷積文字分類
- BootstrapBlazor實戰 Chart 圖表使用(1)bootBlazor
- Web 前端實戰(三):雷達圖Web前端
- 牛半仙的妹子序列
- Python爬蟲入門教程 2-100 妹子圖網站爬取Python爬蟲網站
- 7.29考試總結(NOIP模擬27)[牛半仙的妹子圖·Tree·序列]
- 泳裝妹子果然棒
- Flutter 自定義 Widget 之餅形圖實戰Flutter
- deepin 20 破解root密碼實戰--圖文密碼
- uniapp實戰——完成圖片的預覽功能APP
- 【實戰】通過Python實現疫情地圖視覺化Python地圖視覺化
- spring boot+bootstrap實現動態輪播圖實戰Spring Boot
- SVG 菜鳥的 Recharts 自定義圖表實戰SVGEcharts
- JavaCV的攝像頭實戰之四:抓圖Java
- web實戰:video結合canvas實現視訊線上截圖WebIDECanvas
- UI/UE實戰之一:巧用Photoshop實現商業人像修圖UI
- 區塊鏈技術實戰學習路線圖區塊鏈
- JavaScript實戰專案:移動端 Touch 輪播圖JavaScript
- SharePoint中你不知道的圖片庫(實戰)
- HTML5 Canvas(實戰:繪製餅圖2 Tooltip)HTMLCanvas