1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        手把手教你使用Python網(wǎng)絡(luò)爬蟲獲取王者榮耀英雄皮膚

        共 4315字,需瀏覽 9分鐘

         ·

        2020-10-02 21:24

        點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

        回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

        歡度國慶,共度中秋。

        /1 前言/

        ????王者榮耀,想必大家都玩過或聽過,游戲里中各式各樣的英雄,每款皮膚都非常精美,用做電腦壁紙?jiān)俸线m不過了。今天來教大家如何使用Python來爬取這些精美的英雄皮膚。


        /2 項(xiàng)目目標(biāo)/

        ??? 創(chuàng)建一個(gè)文件夾, 英雄分類保存所有皮膚圖片。下載成功結(jié)果顯示控制臺(tái)。


        /3?項(xiàng)目準(zhǔn)備/

        軟件:PyCharm

        需要的庫:requests、lxml、fake_useragent、json、os

        網(wǎng)站如下:

        https://www.555x.org/html/wuxiaxianxia/list_29_{}.html


        /4 項(xiàng)目分析/

        1、首先打開王者榮耀官網(wǎng),點(diǎn)擊英雄資料。


        2、F12右鍵檢查,點(diǎn)擊英雄鏈接。


        3、多點(diǎn)幾個(gè)英雄鏈接看看網(wǎng)址規(guī)律。

        herodetail/531.shtmlherodetail/523.shtmlherodetail/199.shtml

        發(fā)現(xiàn)只有后面的數(shù)字在變化,最后的數(shù)字應(yīng)該是控制的是哪個(gè)英雄,我們暫且認(rèn)為它是英雄的編號(hào)。

        4、按下F5刷新頁面,點(diǎn)擊network,找到herolist .json。(亂碼沒關(guān)系把herolist .json下載下來觀察)如圖:

        看到ename,就是對(duì)應(yīng)網(wǎng)址后綴英雄的名稱。而cname是對(duì)應(yīng)英雄的名稱。skin_name對(duì)應(yīng)皮膚的名字。


        5、點(diǎn)擊英雄鏈接。觀察圖片地址的變化。

        http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/107/107-bigskin-1.jpghttp://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/107/107-bigskin-2.jpghttp://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/107/107-bigskin-3.jpghttp://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/107/107-bigskin-4.jpghttp://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/107/107-bigskin-5.jpghttp://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/107/107-bigskin-6.jpghttp://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/107/107-bigskin-7.jpg


        6、觀察到同一個(gè)英雄的皮膚圖片路徑從1開始依次遞增,我們?cè)賮砜纯床煌⑿壑g是如何區(qū)分的。會(huì)發(fā)現(xiàn),107/107-這個(gè)英雄的編號(hào)不一樣,獲取到的圖片就不一樣。決定的是ename。

        7、我們可以用字符串拼接的方式進(jìn)行訪問。

        https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{}/{}-bigskin-{}.jpg


        /5?項(xiàng)目實(shí)現(xiàn)/

        1、定義一個(gè)class類繼承object,定義init方法繼承self,主函數(shù)main繼承self。導(dǎo)入需要的庫和網(wǎng)址,并創(chuàng)建保存文件夾,代碼如下所示。

        import requests, json, osfrom lxml import etreefrom fake_useragent import UserAgentclass wzry(object):    def __init__(self):        os.mkdir("王者")  # 創(chuàng)建王者榮耀這個(gè)文件夾 記住只有第一次運(yùn)行加上,如果多次運(yùn)行請(qǐng)注釋掉本行    def main(self):          passif __name__ == '__main__':    Siper=wzry()    Siper.main()


        2、創(chuàng)建wzry方法(),主方法(main)實(shí)現(xiàn) ,對(duì)herolist .json 進(jìn)行json解析。

             def wzry(self):         response = requests.get('https://pvp.qq.com/web201605/js/herolist.json', headers=self.headers)        content = response.text  # 這里后獲取的是json數(shù)據(jù)類型需要 轉(zhuǎn)換成Python對(duì)應(yīng)類型        data = json.loads(content)     def main(self):          self,wzry()


        3、for遍歷data獲取需要的字段。創(chuàng)建對(duì)應(yīng)的英雄文件夾。

           for i in data:        hero_number = i['ename']  # 獲取英雄名字編號(hào)        hero_name = i['cname']  # 獲取英雄名字        os.mkdir("././王者榮耀/{}".format(hero_name))  # 創(chuàng)建英雄對(duì)應(yīng)的文件夾


        4、對(duì)英雄界面發(fā)生請(qǐng)求,利用xpath解析數(shù)據(jù),代碼如下。

              response_src = requests.get("https://pvp.qq.com/web201605/herodetail/{}.shtml".format(hero_number),                                  headers=self.headers)      hero_content = response_src.content.decode('gbk')  # 返回相應(yīng)的html頁面      hero_data = etree.HTML(hero_content)  # xpath解析對(duì)象      hero_img = hero_data.xpath('//div[@class="pic-pf"]/ul/@data-imgname')  # 提取每個(gè)英雄的皮膚名字      hero_src = hero_img[0].split('|')  # 去掉每個(gè)皮膚名字中間的分隔符


        5、遍歷英雄src處理圖片名稱。

            for i in range(len(hero_src)):        i_num = hero_src[i].find("&")
        skin_name = hero_src[i][:i_num] #print(skin_name) # 皮膚圖片地址請(qǐng)求


        6、圖片地址請(qǐng)求。

              response_skin = requests.get(          "https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{}/{}-bigskin-{}.jpg".format(              hero_number, hero_number, i + 1))      skin_img = response_skin.content  # 獲取每個(gè)皮膚圖片


        7、?把皮膚圖片存儲(chǔ)到對(duì)應(yīng)名字的文件里,成功顯示控制臺(tái)。

            with open("./王者榮耀/{}/{}.jpg".format(hero_name, skin_name), "wb")as f:          f.write(skin_img)  # 把皮膚圖片存儲(chǔ)到對(duì)應(yīng)名字的文件里          print("%s.jpg 下載成功?。? % (skin_name))


        /6?效果展示/

        1、點(diǎn)擊綠色小三角運(yùn)行。需要注意的是創(chuàng)建王者榮耀這個(gè)文件夾,記住只有第一次運(yùn)行加上。


        2、運(yùn)行程序后,結(jié)果顯示在控制臺(tái),如下圖所示。


        3、英雄分類列表。


        4、雙擊文件,即可展示。


        /7 小結(jié)/

        1、不建議抓取太多數(shù)據(jù),容易對(duì)服務(wù)器造成負(fù)載,淺嘗輒止即可。
        2、希望通過這個(gè)項(xiàng)目,能夠幫助了解json解析頁面的基本流程,字符串是如何拼接,format函數(shù)如何運(yùn)用。
        3、本文基于Python網(wǎng)絡(luò)爬蟲,利用爬蟲庫,實(shí)現(xiàn)王者榮耀圖片。實(shí)現(xiàn)的時(shí)候,總會(huì)有各種各樣的問題,切勿眼高手低,勤動(dòng)手,才可以理解的更加深刻。
        4、如果需要本文源碼的話,請(qǐng)?jiān)诠娞?hào)后臺(tái)回復(fù)“王者榮耀”四個(gè)字進(jìn)行獲取,覺得不錯(cuò),記得給個(gè)star噢。

        -------------------?薦書?-------------------

        內(nèi)容簡介

        《Python數(shù)據(jù)分析》這本書主要圍繞整個(gè)數(shù)據(jù)分析方法論的常規(guī)流程,介紹了Python常用的工具包,包括科學(xué)計(jì)算庫Numpy、數(shù)據(jù)分析庫Pandas、數(shù)據(jù)挖掘庫Scikit-Learn,以及數(shù)據(jù)可視化庫Matplotlib和Seaborn的基本知識(shí),并從數(shù)據(jù)分析挖掘的實(shí)際業(yè)務(wù)應(yīng)用出發(fā),講解了互聯(lián)網(wǎng)、金融及零售等行業(yè)的真實(shí)案例,比如客戶分群、產(chǎn)品精準(zhǔn)營銷、房價(jià)預(yù)測、特征降維等,深入淺出、循序漸進(jìn)地介紹了Python數(shù)據(jù)分析的全過程。?

          本書內(nèi)容精煉、重點(diǎn)突出、案例豐富,適合在企業(yè)中從事數(shù)據(jù)分析、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)等工作的人員學(xué)習(xí)使用,同樣適合想從事數(shù)據(jù)分析挖掘工作的各大中專院校的學(xué)生與教師,以及其他對(duì)數(shù)據(jù)分析挖掘技術(shù)領(lǐng)域有興趣愛好的各類人員。

        -------------------?End?-------------------

        往期精彩文章推薦:

        歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

        想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

        萬水千山總是情,點(diǎn)個(gè)【在看】行不行

        /今日留言主題/

        隨便說一兩句吧~~

        瀏覽 74
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            色伊人 | 欧美日韩一级A片 | 国产精品视频久久 | 夜夜高潮夜夜爽精品 | 日本裸体tickle挠胸的网站 | 精品国产成人a8198A片 | 中文字幕性 | 久久久aaaa | 91亚洲国产成人精品性色 | 国产亚洲精 |