Python爬蟲之足球小將動漫(圖片)下載

??盡管俄羅斯世界杯的熱度已經褪去,但這屆世界杯還是給全世界人民留下了無數(shù)難忘的回憶猾浦,不知你的回憶里有沒有日本隊的身影录淡?本次世界杯中何缓,日本隊的表現(xiàn)讓人眼前一亮,很難想象洛退,就是這樣一只隊伍对嚼,二十幾年還是我們國家足球隊的水平一樣夹抗,也許還不如我們國足呢。
??足球小將(隊長小翼纵竖、キャプテン翼)由日本著名動漫家高橋陽一于1981年開始連載漠烧,從此這部動漫就伴隨著一代又一代的日本靡砌,甚至全世界的少年兒童成長,也在無形有形中促進了日本足球的進步度液。本屆世界杯中堕担,在日本與比利時的比賽中霹购,日本球迷們高舉隊長小翼的畫面就足以證明這部動漫對日本足球的深遠影響齐疙。
??本文將介紹如何利用Python爬蟲來下載足球小將的動漫圖片贞奋。
??首先忆矛,我們需要下載的網址為:https://mhpic.samanlehua.com/comic/Z%2F%E8%B6%B3%E7%90%83%E5%B0%8F%E5%B0%86%E7%BF%BC%2F%E7%AC%AC01%E5%8D%B7%2F2.jpg-noresize.webp催训, 截圖如下:

網頁截圖

我們注意到漫拭,在這個網址中采驻,只有卷數(shù)和動漫圖片的序號在發(fā)生改變礼旅,因此痘系,我們只需要找到總共的卷數(shù)以及每一卷中所包含的圖片即可完成此爬蟲汰翠。
??不過稍微需要注意的是复唤,爬蟲下載下來的圖片格式為webp格式佛纫。WebP(發(fā)音 weppy跟磨,項目主頁)抵拘,是一種支持有損壓縮和無損壓縮的圖片文件格式僵蛛,派生自圖像編碼格式 VP8充尉。根據(jù) Google 的測試衣形,無損壓縮后的 WebP 比 PNG 文件少了 45% 的文件大小驼侠,即使這些 PNG 文件經過其他壓縮工具壓縮之后姿鸿,WebP 還是可以減少 28% 的文件大小。
??我們希望能夠將webp格式的圖片轉化為png格式倒源。因此苛预,我們需要在Linux系統(tǒng)中安裝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 # 下載失敗的圖片張數(shù)
COUNT = 0

# 參數(shù):
# dir: 圖片保存的目錄
# juanshu_num: 卷數(shù)
# page: 頁數(shù)
# 此函數(shù)的作用: 下載特定卷的特定頁的圖片到指定的保存目錄
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)

# 參數(shù):juanshu_num: 卷數(shù)
#       page_num: 該卷的圖片張數(shù)
# 此函數(shù)的作用: 下載某一卷中的所有圖片
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()
    # 每一卷的圖片張數(shù), 一共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]
    # 設置線程個數(shù)為10個
    executor = ThreadPoolExecutor(max_workers=10)  # 可以自己調整max_workers
    # submit()的參數(shù): 第一個為函數(shù)秘遏, 之后為該函數(shù)的傳入參數(shù),允許有多個
    # 并發(fā)下載圖片
    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('下載失敗的圖片張數(shù)為:%d'%COUNT)

main()

運行以上程序垄提,靜靜地等待程序運行完畢,輸出的結果如下:

運行結果

??我們再去Linux中查看已經下好的圖片:


21卷動漫

一共下載了3577張圖片(沒有一張下載失斨芄铡),用了約1521秒凰兑,效率杠杠的妥粟,哈哈~~

??本文到此就要結束了,最后再加一句:中國足球吏够,加油肮锤!

注意:本人現(xiàn)已開通兩個微信公眾號: 因為Python(微信號為:python_math)以及輕松學會Python爬蟲(微信號為:easy_web_scrape)锅知, 歡迎大家關注哦~~

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末播急,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子售睹,更是在濱河造成了極大的恐慌桩警,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昌妹,死亡現(xiàn)場離奇詭異捶枢,居然都是意外死亡,警方通過查閱死者的電腦和手機飞崖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門烂叔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人固歪,你說我怎么就攤上這事蒜鸡。” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵逢防,是天一觀的道長叶沛。 經常有香客問我,道長胞四,這世上最難降的妖魔是什么恬汁? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮辜伟,結果婚禮上氓侧,老公的妹妹穿的比我還像新娘。我一直安慰自己导狡,他們只是感情好约巷,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旱捧,像睡著了一般独郎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枚赡,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天氓癌,我揣著相機與錄音,去河邊找鬼贫橙。 笑死贪婉,一個胖子當著我的面吹牛,可吹牛的內容都是我干的卢肃。 我是一名探鬼主播疲迂,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼莫湘!你這毒婦竟也來了尤蒿?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤幅垮,失蹤者是張志新(化名)和其女友劉穎腰池,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體军洼,經...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡巩螃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了匕争。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片避乏。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖甘桑,靈堂內的尸體忽然破棺而出拍皮,到底是詐尸還是另有隱情歹叮,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布铆帽,位于F島的核電站咆耿,受9級特大地震影響,放射性物質發(fā)生泄漏爹橱。R本人自食惡果不足惜萨螺,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望愧驱。 院中可真熱鬧慰技,春花似錦、人聲如沸组砚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糟红。三九已至艾帐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盆偿,已是汗流浹背柒爸。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留事扭,地道東北人揍鸟。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像句旱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晰奖,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內容

  • 昨夜戌時上床 只待明晨不忙 眼瞅要入夢鄉(xiāng) 孰料牙疼惶惶 惆悵谈撒,惆悵 翻來覆去心殤 時間慢慢流淌 疼痛依然囂張 著我...
    溫火火閱讀 604評論 0 47
  • 長壽寄長壽,天年豈可偷匾南。 惡行回首改啃匿,善念入心修。 佳話四鄰好蛆楞,退墻三尺留溯乒。 何時情意淺,冷面掩深樓豹爹。
    沈明東閱讀 153評論 0 1
  • 爺爺已經去世四年了裆悄,一直想寫篇文字來悼念他,卻總是不知從何寫起臂聋。 爺爺?shù)囊簧H多坎坷光稼。他出生在解放前的佃農家里或南,剛...
    曉敏啦閱讀 174評論 0 0