本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理
以下文章來源于騰訊云 作者: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[@]//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噢~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/234628.html
標籤:Python
