Python,可以幫忙搶票,可以爬蟲東西,關于Python爬蟲怎么做?今天教大家一個案例,python爬蟲多線程實戰:爬取美桌1080p壁紙圖片 | 技術
技術點分析
· 爬蟲requests
· 多線程threading
· 文件io讀寫操作
· xpath 提取ur
· 正則
實戰
· 分析url
搞清楚各個url 的關聯win4000.com/wallpaper_205_0_10_1.html
URL中與分類的關系:
wallpaper : 桌面壁紙
205 :壁紙分類對應大陸明星
10 :圖片尺寸對應1920*1080
分析到這一部,我們知道 ,如果要需要其他類型的壁紙,只需要更改網站分類代碼就可以了。
· 谷歌 charme ,通過右鍵檢查
chrame 瀏覽器右鍵提示。
按圖順序,依次找到對應的html標簽。
通過查看,我們發現 中間展示 的圖片是由一個ul 標簽包裹的 多個Li
我們所要跳轉的鏈接 就在 Li 標簽中, 這時就需要使用xpath進行數據的提取。
到此,我們第一層url 的分析就完成了。可以寫出以下代碼段。
此時通過xpath 獲到當前頁面中的 ul 中所有li 標簽了。
那單個明星的跳轉鏈接只需要再次xpath 進行提取就Ok了。
完成到這里你的代碼運行結果應該如下:是兩個列表list。
運行結果
準備下載圖片
到這,完成第一步,你已經成功獲到 每個明星的跳轉鏈接 :
url: win4000.com/wallpaper_detail_153895.html
再次進行url 的分析:
初步分析
通過上圖的分析,可以找到這張圖,是我們要 1080規格的。但很可惜,一共9張,現在只能找到一張圖片的url。
選其中兩張圖片地址對比:
pic1.win4000.com/wallpaper/2018-12-26/5c22eb195abe8.jpg
pic1.win4000.com/wallpaper/2018-12-26/5c22eb1c722dc.jpg
好像就是后面文件名不同。如果一張張取是不是很麻煩?
不信你自己去試一下。點再分析一下頁面,有個 【查看原圖】 選項,點一下試試呢?
點擊上圖出,點完發現了url的變化。
再看看有沒有驚喜的地方 :
上圖為url分析。
通過上圖的分析 ,我們發現原來這個big頁面有我們想要的所有 1080P的圖片,而且,全是用ul 包裹,放到單個Li 標簽中 。那簡單了,用之前的辦法 再提取一次,就出來了。代碼如下:
到這里,我們第一步就完成了一頁24個明星圖片的地址url的爬取。第二步,完成了單個明星的1080圖片地址url的爬取。下一步,我們把圖片保存到本地就順利結束。
圖片保存
按需求,要單獨到一個文件夾內。那我們就需要在本地路徑內 創建對應的文件夾。此處使用 star_img_name 列表中的值。需要使用到i/o讀寫操作。
順利完成 這個需求:
源碼展示
代碼運行結果若不同,可看一眼源碼:
運行起來是不是很慢(完善版使用多線程),而且這樣看代碼,是不是有種:干干巴巴的,麻麻咧咧的,一點都不圓潤,盤他!!
完善版是可以完成可選分類,可選規格 ,多線程版。希望這個小實戰案例可以幫到大家。
有關于Python爬蟲的課程:
Python爬蟲數據挖掘基礎教程
python網絡爬蟲第一天
python網絡爬蟲第二天
有想學習的小伙伴,可以關注黑馬程序員,后臺回復“Python爬蟲”哦!