成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Python3怎么爬取英雄聯(lián)盟所有英雄皮膚

這篇文章將為大家詳細(xì)講解有關(guān)Python3怎么爬取英雄聯(lián)盟所有英雄皮膚,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

創(chuàng)新互聯(lián)自2013年起,先為玉田等服務(wù)建站,玉田等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為玉田企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

打開英雄聯(lián)盟官網(wǎng),點(diǎn)擊游戲資料,繼續(xù)按F12,按F5刷新,就會發(fā)現(xiàn)有一個(gè)champion.js文件,復(fù)制這個(gè)js文件的地址.和王者榮耀不同,這個(gè)是js而王者是json比較好處理。js中有英雄的編號和名字,將keys中的數(shù)據(jù)拿出來

Python3怎么爬取英雄聯(lián)盟所有英雄皮膚

通過requests的get方法獲取到響應(yīng)的內(nèi)容,pat_js是正則的規(guī)則,compile函數(shù)將包含的正則表達(dá)式的字符串創(chuàng)建模式對象,直接調(diào)用findall方法。返回的就是匹配的字串以列表的形式顯示。eval將其轉(zhuǎn)換為字典

def path_js(url_js):

    res_js = requests.get(url_js, verify= False).content

    html_js = res_js.decode("gbk")

    pat_js = r'"keys":(.*?),"data"'

    enc = re.compile(pat_js)

    list_js = enc.findall(html_js)

    dict_js = eval(list_js[0])

    print(dict_js)

Python3怎么爬取英雄聯(lián)盟所有英雄皮膚

--------------------------------------------------------------------------------------------------------

在頁面中點(diǎn)開英雄資料,沒有英雄的皮膚url,需要右鍵,在新標(biāo)簽頁打開,獲取到連接http://ossweb-img.qq.com/images/lol/web201310/skin/big266000.jpg

根據(jù)獲取到的鏈接分析,big后前三個(gè)數(shù)字代表英雄的編號,后三個(gè)代表皮膚的個(gè)數(shù),根據(jù)此來拼接獲取皮膚圖片的鏈接。每個(gè)英雄的皮膚不超過20個(gè),以此來循環(huán)獲取拼接。(獲取的鏈接會有大量的沒有響應(yīng)的鏈接)

def path_url(dict_js):

    pic_list = []

    for key in dict_js:

        for i in range(20):

            xuhao = str(i)

            if len(xuhao) == 1:

                num_houxu = "00" + xuhao

            elif len(xuhao) == 2:

                num_houxu = "0" + xuhao

            numStr = key + num_houxu

            url = r'http://ossweb-img.qq.com/images/lol/web201310/skin/big' + numStr + '.jpg'

            pic_list.append(url)

    print(pic_list)

    return pic_list

Python3怎么爬取英雄聯(lián)盟所有英雄皮膚

鏈接獲取到之后,開始根據(jù)鏈接來下載皮膚

先生成文件的保存路徑

'''

根據(jù)字典的value值獲取英雄名字,將其作為文件名和保存路徑

'''

def name_pic(dict_js, path):

    list_filePath = []

    for name in dict_js.values():

        for i in range(20):

            file_path = path + name + str(i) + '.jpg'

            list_filePath.append(file_path)

    print(list_filePath)

    return list_filePath

Python3怎么爬取英雄聯(lián)盟所有英雄皮膚

接下來就是下載圖片,將圖片寫入文件。(解決大量沒有響應(yīng)的鏈接)還是通過requests的get方法獲取 響應(yīng),如果響應(yīng)的text的內(nèi)容是404,則結(jié)束本次循環(huán),如果不是則將該圖片寫入文件保存。這樣就不會下載大量的不能打開的空圖片

def writing(url_list, list_filePath):

    try:

        for i in range(len(url_list)):

            res = requests.get(url_list[i], verify=False)

            if '404 page not found' in res.text:

                print("該英雄皮膚下載完畢"), i

                continue

            with open(list_filePath[i], "wb") as f:

                f.write(res.content)

    except Exception as e:

        print("下載圖片出錯(cuò),%s" % (e))

        return False

Python3怎么爬取英雄聯(lián)盟所有英雄皮膚

Python3怎么爬取英雄聯(lián)盟所有英雄皮膚

獲取到996個(gè)皮膚

至此,皮膚獲取完畢。當(dāng)然還可以優(yōu)化,可以嘗試使用多線程改進(jìn)該程序,圖片太多,單線程過慢。還有皮膚鏈接的生成問題,考慮是否有更好的解決辦法,不會去生成大量無用的鏈接。程序會去請求這些無用的鏈接,造成大量資源浪費(fèi)。

關(guān)于Python3怎么爬取英雄聯(lián)盟所有英雄皮膚就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站名稱:Python3怎么爬取英雄聯(lián)盟所有英雄皮膚
網(wǎng)站路徑:http://jinyejixie.com/article4/pospoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站網(wǎng)站導(dǎo)航、全網(wǎng)營銷推廣域名注冊、標(biāo)簽優(yōu)化、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
安泽县| 沿河| 黄浦区| 滦平县| 甘洛县| 阿城市| 柘城县| 汨罗市| 宣汉县| 康乐县| 石屏县| 临沧市| 裕民县| 嘉义县| 秀山| 乐都县| 望谟县| 沁阳市| 北宁市| 温泉县| 婺源县| 武乡县| 盐源县| 山阴县| 平远县| 乌鲁木齐县| 太谷县| 台山市| 永德县| 皋兰县| 枣强县| 多伦县| 莆田市| 蕲春县| 马关县| 华宁县| 家居| 锡林郭勒盟| 大理市| 蓬溪县| 犍为县|