手把手教你爬取天堂網1920*1080大圖片(批量下載)——實戰篇


/1 前言/

上篇文章 手把手教你爬取天堂網1920*1080大圖片(批量下載)——理論篇我們談及了天堂網站圖片抓取的理論,這篇文章將針對上篇文章的未盡事宜進行完善,完成圖片的批量抓取。

/2 圖片網址解析/

1. 我們首先來分析一下這個圖片的地址在哪里。我們選擇圖片,然后右擊網頁檢查,可以看到圖片的路徑,如下圖所示。

2. 將其單獨放出來,如下圖所示。

3. 可以看到<a href>就是圖片的鏈接,而src就圖片的地址,所以我們可以找它的上一級標簽<ul>。如果再找不到那就再找上一級以此類推(找到越詳細內容更准確)。使用選擇器xpath,獲取到src的值(網址后綴)之后,將后綴加上“https前綴”就可以得到每一個網址,如下圖所示:

4. 之后嘗試運行,如下圖所示,可以獲取到具體的網址。

5. 我們再對這個網址進行請求(參考一個請求的方法)分析數據。

6. 我們以這個魚的圖片為例,點擊它來到二級頁面。

7. 右鍵檢查 可以看到我們要獲取的是src的地址,如下圖所示。

8. 獲取圖片的源碼,如下圖所示。

9. Xpath 獲取到路徑,為了方便區分圖片的名字,如下圖所示。

/3 下載圖片/

1. 為方便儲存,新建一個filename來作為保存的路徑,如下圖所示。

2. 也就是說你需要在Python代碼的同級目錄,提前新建一個文件夾,名叫“天堂網爬的圖片”,如果沒有這個文件夾的話,將會報下圖的錯。

3. 使用with函數進行文件的打開和寫入,下方代碼的含義是創建一個文件,代碼框里邊有具體的注釋。

"wb" # 意思是以二進制格式打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
"as f" # 意思是寫入一個叫f的文件。
"f.wirite(html)" # 意思是說把html的內容寫入f這個文件。

4. 下面是各個編碼代表的含義,可以學習一下。

5. 基於以上代碼,基本上就可實現批量下載。接下來,我們繼續優化一下。我們導入一個叫fake_useragent的庫 fake_useragent第三方庫,來實現隨機請求頭的設置。

fromfake_useragent import UserAgent
 
ua =UserAgent()
print(ua.ie)   #隨機打印ie瀏覽器任意版本
print(ua.firefox)#隨機打印firefox瀏覽器任意版本
print(ua.chrome)  #隨機打印chrome瀏覽器任意版本
print(ua.random)  #隨機打印任意廠家的瀏覽器

6. 我們可以再初始化init方法,添加ua.random,讓它隨機的產生;其中UserAgent代碼如圖:(這里設置隨機產生50個挑選其中一個進行請求)

7. 最終實現的效果圖,終端顯示如下圖所示。

8. 將圖片自動下載到本地后的效果圖,高清的噢~

9. 至此,針對解析出來的圖片地址予以批量下載的任務已經完成,接下來自己可以開心的去瀏覽圖片啦。

10. 不建議大家爬取太多數據,這樣會給服務器增大負載,淺嘗輒止即可。

/4 小結/

本文基於理論篇,通過Python 中的爬蟲庫 requestslxmlfake_useragent,帶大家進行網頁結構的分析以及網頁圖片地址數據的提取,並且針對解析出來的圖片地址予以批量下載,方法行之有效,歡迎大家積極嘗試。

如果需要本文源碼的話,請在公眾號【Python爬蟲與數據挖掘】后台回復“高清圖片”四個字進行獲取,覺得不錯,記得給個star噢。

往期精彩文章推薦:

想學習更多Python網絡爬蟲與數據挖掘知識,可前往專業網站:http://pdcfighting.com/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM