摘要:本屆世界杯中,在日本與比利時的比賽中,日本球迷們高舉隊長小翼的畫面就足以證明這部動漫對日本足球的深遠影響。本文將介紹如何利用爬蟲來下載足球小將的動漫圖片。
??盡管俄羅斯世界杯的熱度已經褪去,但這屆世界杯還是給全世界人民留下了無數難忘的回憶,不知你的回憶里有沒有日本隊的身影?本次世界杯中,日本隊的表現讓人眼前一亮,很難想象,就是這樣一只隊伍,二十幾年還是我們國家足球隊的水平一樣,也許還不如我們國足呢。
??足球小將(隊長小翼、キャプテン翼)由日本著名動漫家高橋陽一于1981年開始連載,從此這部動漫就伴隨著一代又一代的日本,甚至全世界的少年兒童成長,也在無形有形中促進了日本足球的進步。本屆世界杯中,在日本與比利時的比賽中,日本球迷們高舉隊長小翼的畫面就足以證明這部動漫對日本足球的深遠影響。
??本文將介紹如何利用Python爬蟲來下載足球小將的動漫圖片。
??首先,我們需要下載的網址為:https://mhpic.samanlehua.com/..., 截圖如下:
我們注意到,在這個網址中,只有卷數和動漫圖片的序號在發生改變,因此,我們只需要找到總共的卷數以及每一卷中所包含的圖片即可完成此爬蟲。
??不過稍微需要注意的是,爬蟲下載下來的圖片格式為webp格式。WebP(發音 weppy,項目主頁),是一種支持有損壓縮和無損壓縮的圖片文件格式,派生自圖像編碼格式 VP8。根據 Google 的測試,無損壓縮后的 WebP 比 PNG 文件少了 45% 的文件大小,即使這些 PNG 文件經過其他壓縮工具壓縮之后,WebP 還是可以減少 28% 的文件大小。
??我們希望能夠將webp格式的圖片轉化為png格式。因此,我們需要在Linux系統中安裝webp軟件,安裝的方式如下:
Ubuntu: sudo apt-get install webp
CentOS: yum -y install libwebp-devel libwebp-tools
安裝完后,通過以下命令就可以講webp格式的圖片轉化為png格式了:
dwebp picture.webp -o picture.png
??整個爬蟲的思路就講完了,我們利用多線程進行下載圖片以及圖片格式轉換的操作,完整的Python代碼如下(需要事先安裝webp, 以及保存目錄需要設置好):
# -*- coding: utf-8 -*- import urllib.request import os import time from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED global COUNT # 下載失敗的圖片張數 COUNT = 0 # 參數: # dir: 圖片保存的目錄 # juanshu_num: 卷數 # page: 頁數 # 此函數的作用: 下載特定卷的特定頁的圖片到指定的保存目錄 def get_webp(dir, juanshu_num, page): # 拼接下載的圖片的網址 base_url = "https://mhpic.samanlehua.com/comic/Z%2F" name = urllib.parse.quote("足球小將翼") juanshu = "0"+str(juanshu_num) if juanshu_num<10 else str(juanshu_num) juanshu = urllib.parse.quote("第%s卷"%juanshu) format = ".jpg-noresize.webp" url = base_url+name+"%2F"+juanshu+"%2F"+str(page)+format # print(url) try: urllib.request.urlretrieve(url, "%s/%d.webp"%(dir, page)) # 下載圖片 print("開始轉化圖片格式:") os.system("dwebp %s/%d.webp -o %s/%d.png"%(dir, page, dir, page)) # 將圖片由webp格式轉化為png格式 print("轉化圖片格式完畢。") os.system("rm -rf %s/%d.webp"%(dir, page)) # 刪除webp格式的圖片 except Exception as err: print(err) # 參數:juanshu_num: 卷數 # page_num: 該卷的圖片張數 # 此函數的作用: 下載某一卷中的所有圖片 def download(juanshu_num, page_num): # 如果目錄不存在,則新建這個目錄 if not os.path.exists("/home/tsubasa/卷%s"%juanshu_num): os.mkdir("/home/tsubasa/卷%s"%juanshu_num) dir = "/home/tsubasa/卷%s"%juanshu_num # 下載每一卷中的所有圖片 for page in range(1, page_num+1): try: get_webp(dir, juanshu_num, page) except urllib.error.HTTPError: print("該圖片不存在或者網絡連接錯誤。") COUNT += 1 def main(): start_time = time.time() # 每一卷的圖片張數, 一共21卷 page_num_list = [175, 175, 165, 171, 169, 172, 170, 170, 168, 174, 171, 168, 168, 168, 176, 169, 171, 167, 166, 172, 172] # 設置線程個數為10個 executor = ThreadPoolExecutor(max_workers=10) # 可以自己調整max_workers # submit()的參數: 第一個為函數, 之后為該函數的傳入參數,允許有多個 # 并發下載圖片 future_tasks = [executor.submit(download, juanshu_num+1, page_num) for juanshu_num,page_num in enumerate(page_num_list)] wait(future_tasks, return_when=ALL_COMPLETED) # 等待所有的任務結束 end_time = time.time() print("圖片下載完畢!一共耗時%s秒。"%(end_time-start_time)) print("下載失敗的圖片張數為:%d"%COUNT) main()
運行以上程序,靜靜地等待程序運行完畢,輸出的結果如下:
??我們再去Linux中查看已經下好的圖片:
一共下載了3577張圖片(沒有一張下載失敗),用了約1521秒,效率杠杠的,哈哈~~
??本文到此就要結束了,最后再加一句:中國足球,加油啊!
注意:本人現已開通兩個微信公眾號: 因為Python(微信號為:python_math)以及輕松學會Python爬蟲(微信號為:easy_web_scrape), 歡迎大家關注哦~~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42082.html
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,。本文來源知乎作者路人甲鏈接楚江數據提供網站數據采集和爬蟲軟件定制開發服務,服務范圍涵蓋社交網絡電子商務分類信息學術研究等。 楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...
摘要:完整代碼如下正在下載根據網易云歌曲的直接下載歌曲上安裝爬取網易云歌曲源碼地址 首發知乎:https://zhuanlan.zhihu.com/p/... 目標 偶然的一次機會聽到了房東的貓的《云煙成雨》,瞬間迷上了這慵懶的嗓音和學生氣的歌詞,然后一直去循環聽她們的歌。然后還特意去刷了動漫《我是江小白》,好期待第二季... 我多想在見你,哪怕匆匆一眼就別離... 好了,不說廢話了。這次...
摘要:首先上再上一定要設置的編碼為否則會下載下來的圖片打不開最后是說明引入必須的模塊,函數接收,并在回調里處理數據。,函數里,定義數據源,這里用的是騰訊動漫,循環處理數據內容,里面的函數,即保存圖片到本地。 首先上package.json { name: Spider, version: 1.0.0, description: spider , main: index.js,...
摘要:本次爬蟲項目將會用到模塊中的類,多線程豆瓣電影圖片。總結通過上述兩個爬蟲程序的對比,我們不難發現,同樣是下載豆瓣電影,個網頁中的圖片,在沒有使用多線程的情況下,總共耗時約,而在使用多線程個線程的情況下,總共耗時約秒,效率整整提高了約倍。 爬蟲項目介紹 ??本次爬蟲項目將爬取豆瓣Top250電影的圖片,其網址為:https://movie.douban.com/top250, 具體頁面如...
閱讀 729·2021-11-24 10:19
閱讀 1106·2021-09-13 10:23
閱讀 3428·2021-09-06 15:15
閱讀 1777·2019-08-30 14:09
閱讀 1683·2019-08-30 11:15
閱讀 1837·2019-08-29 18:44
閱讀 934·2019-08-29 16:34
閱讀 2456·2019-08-29 12:46