天天看點

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

Python,可以幫忙搶票,可以爬蟲東西,關于Python爬蟲怎麼做?今天教大家一個案例,python爬蟲多線程實戰:爬取美桌1080p桌面圖檔

技術點分析

·

爬蟲requests

·

多線程threading

·

檔案io讀寫操作

·

xpath 提取ur

·

正則

實戰

· 分析url

搞清楚各個url 的關聯http://win4000.com/wallpaper_205_0_10_1.html

URL中與分類的關系:

wallpaper : 桌面桌面

205 :桌面分類對應大陸明星

10 :圖檔尺寸對應1920*1080

分析到這一部,我們知道 ,如果要需要其他類型的桌面,隻需要更改網站分類代碼就可以了。

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...
· 谷歌 charme ,通過右鍵檢查
.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

chrame 浏覽器右鍵提示。

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

按圖順序,依次找到對應的html标簽。

通過檢視,我們發現 中間展示 的圖檔是由一個ul 标簽包裹的 多個Li

我們所要跳轉的連結 就在 Li 标簽中, 這時就需要使用xpath進行資料的提取。

到此,我們第一層url 的分析就完成了。可以寫出以下代碼段。

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...
.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

此時通過xpath 獲到目前頁面中的 ul 中所有li 标簽了。

那單個明星的跳轉連結隻需要再次xpath 進行提取就Ok了。

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

完成到這裡你的代碼運作結果應該如下:是兩個清單list。

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...
.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

運作結果

準備下載下傳圖檔

到這,完成第一步,你已經成功獲到 每個明星的跳轉連結 :

url: http://win4000.com/wallpaper_detail_153895.html

再次進行url 的分析:

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

初步分析

通過上圖的分析,可以找到這張圖,是我們要 1080規格的。但很可惜,一共9張,現在隻能找到一張圖檔的url。

選其中兩張圖檔位址對比:

http://pic1.win4000.com/wallpaper/2018-12-26/5c22eb195abe8.jpg

http://pic1.win4000.com/wallpaper/2018-12-26/5c22eb1c722dc.jpg

好像就是後面檔案名不同。如果一張張取是不是很麻煩?

不信你自己去試一下。點再分析一下頁面,有個 【檢視原圖】 選項,點一下試試呢?

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

點選上圖出,點完發現了url的變化。

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

再看看有沒有驚喜的地方 :

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

上圖為url分析。

通過上圖的分析 ,我們發現原來這個big頁面有我們想要的所有 1080P的圖檔,而且,全是用ul 包裹,放到單個Li 标簽中 。那簡單了,用之前的辦法 再提取一次,就出來了。代碼如下:

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...
.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

到這裡,我們第一步就完成了一頁24個明星圖檔的位址url的爬取。第二步,完成了單個明星的1080圖檔位址url的爬取。下一步,我們把圖檔儲存到本地就順利結束。

圖檔儲存

按需求,要單獨到一個檔案夾内。那我們就需要在本地路徑内 建立對應的檔案夾。此處使用 star_img_name 清單中的值。需要使用到i/o讀寫操作。

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...
.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

順利完成 這個需求:

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

源碼展示

代碼運作結果若不同,可看一眼源碼:

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

運作起來是不是很慢(完善版使用多線程),而且這樣看代碼,是不是有種:幹幹巴巴的,麻麻咧咧的,一點都不圓潤,盤他!!

.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...
.net背景怎麼提取html中的多個圖檔的絕對位址_python爬蟲多線程實戰:爬取美桌1080p桌面圖檔...

完善版是可以完成可選分類,可選規格 ,多線程版。希望這個小實戰案例可以幫到大家。

記得點贊關注哦,老子愛你們。

繼續閱讀