1. 程式人生 > 實用技巧 >Python爬蟲教你獲取4K超清桌布圖片,手把手教你跟我一起爬!

Python爬蟲教你獲取4K超清桌布圖片,手把手教你跟我一起爬!

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理

以下文章來源於騰訊雲 作者:Python進階者

( 想要學習Python?Python學習交流群:1039649593,滿足你的需求,資料都已經上傳群檔案流,可以自行下載!還有海量最新2020python學習資料。 )

/1 前言/

想要電腦換個桌布時都特別苦惱,因為百度搜到那些桌布也就是解析度達到了桌布的水準。可是裡面圖片的質量嘛,實在是不忍直視…。而有些4K高清的桌布大多是有版權的 ,這就使我們想要獲取高清的圖片,變得非常的困難。

wallhaven 網站是無版權的4K桌布 ,而且主題豐富(創意、攝影、人物、動漫、繪畫、視覺),今天教大家如何去批量的去下載wallhaven4K原圖。

/2 專案目標/

獲取對應的4K桌布,並批量下載儲存在資料夾。

/3 涉及的庫和網站/

軟體:PyCharm

需要用到的庫:requests、lxml、fake_useragent、time

先列出網址,如下所示:

https://wallhaven.cc/search?q=id%3A65348&page={}

網址city=%E5%B9%BF%E5%B7%9E指的是廣州這個城市、pn指的是頁數。

/4 專案分析/

滑動滑鼠觀察下一頁的網址的變化:

https://wallhaven.cc/search?q=id%3A65348&page=1
https:
//wallhaven.cc/search?q=id%3A65348&page=2 https://wallhaven.cc/search?q=id%3A65348&page=3

滑動下一頁時,每增加一頁page自增加1,用{}代替變換的變數,再用for迴圈遍歷這網址,實現多個網址請求。

/5 具體實現/

1、定義一個class類繼承object,定義init方法繼承self,主函式main繼承self。匯入需要的庫和網址。

import requests
from lxml import etree
from fake_useragent import UserAgent
import time class wallhaven(object): def __init__(self): self.url = "https://wallhaven.cc/search?q=id%3A65348&page={}" def main(self): pass if __name__ == '__main__': imageSpider = wallhaven() imageSpider.main()

2、fake_useragent模組實現隨機產生UserAgent。

 ua = UserAgent(verify_ssl=False)
        for i in range(1, 50):
            self.headers = {
                'User-Agent': ua.random,
            }

3、for迴圈實現多網址訪問。

startPage = int(input("起始頁:"))
endPage = int(input("終止頁:"))
for page in range(startPage, endPage + 1):
    url = self.url.format(page)

4、傳送請求 獲取響應。

'''傳送請求  獲取響應'''
    def get_page(self, url):
        res = requests.get(url=url, headers=self.headers)
        html = res.content.decode("utf-8")
        return html

5、解析一級頁面,得到二級頁面的 href 地址。

def parse_page(self, html):
    parse_html = etree.HTML(html)
    image_src_list = parse_html.xpath('//figure//a/@href')

6、遍歷二級頁面網址,發生請求、解析資料。找到相對於的圖片地址。

html1 = self.get_page(i)  # 二級頁面發生請求
parse_html1 = etree.HTML(html1)
# print(parse_html1)
filename = parse_html1.xpath('//div[@class="scrollbox"]//img/@src')
# print(filename)

7、獲取到的圖片地址,發生請求,儲存。

# 圖片地址發生請求
for img in filename:
    dirname = "./圖/" + img[32:] '''可修改圖片儲存的地址'''
    print(dirname)
    html2 = requests.get(url=img, headers=self.headers).content

    with open(dirname, 'wb') as f:
        f.write(html2)
        print("%s下載成功" % filename)

8、呼叫方法,實現功能。

html = self.get_page(url)
self.parse_page(html)
優化:設定延時。(防止ip被封)。

time.sleep(1.4) """時間延時"""

/6 效果展示/

1、點選綠色按鈕執行,將結果顯示在控制檯,如下圖所示。輸起始頁和終止頁,回車。

2、圖片下載成功控制檯輸出。

3、批量儲存。

4、驗證4K。(點選圖片開啟屬性)

/7 小結/

1、不建議抓取太多資料,容易對伺服器造成負載,淺嘗輒止即可。
2、本文基於Python網路爬蟲,利用爬蟲庫,獲取wallhaven4K桌布。
3、4K的桌布下載時可能會有點緩慢,請大家耐心的等待。如果圖片的地址不一樣,需要自己修改一下圖片的儲存的地址。
4、大家也可以在wallhaven網址上,尋找自己喜歡圖片,按照操作步驟,自己嘗試去做。自己實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。
5、如果本文原始碼的小夥伴,請在後臺回覆“4K桌布”四個字進行獲取,覺得不錯,記得給個Star噢~