<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 4315字,需瀏覽 9分鐘

           ·

          2020-10-02 21:24

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

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

          歡度國(guó)慶,共度中秋。

          /1 前言/

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


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

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


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

          軟件:PyCharm

          需要的庫(kù):requests、lxml、fake_useragent、json、os

          網(wǎng)站如下:

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


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

          1、首先打開(kāi)王者榮耀官網(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刷新頁(yè)面,點(diǎn)擊network,找到herolist .json。(亂碼沒(méi)關(guān)系把herolist .json下載下來(lái)觀察)如圖:

          看到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開(kāi)始依次遞增,我們?cè)賮?lái)看看不同英雄之間是如何區(qū)分的。會(huì)發(fā)現(xiàn),107/107-這個(gè)英雄的編號(hào)不一樣,獲取到的圖片就不一樣。決定的是ename。

          7、我們可以用字符串拼接的方式進(jìn)行訪問(wè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)入需要的庫(kù)和網(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頁(yè)面      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、希望通過(guò)這個(gè)項(xiàng)目,能夠幫助了解json解析頁(yè)面的基本流程,字符串是如何拼接,format函數(shù)如何運(yùn)用。
          3、本文基于Python網(wǎng)絡(luò)爬蟲(chóng),利用爬蟲(chóng)庫(kù),實(shí)現(xiàn)王者榮耀圖片。實(shí)現(xiàn)的時(shí)候,總會(huì)有各種各樣的問(wèn)題,切勿眼高手低,勤動(dòng)手,才可以理解的更加深刻。
          4、如果需要本文源碼的話,請(qǐng)?jiān)诠娞?hào)后臺(tái)回復(fù)“王者榮耀”四個(gè)字進(jìn)行獲取,覺(jué)得不錯(cuò),記得給個(gè)star噢。

          -------------------?薦書(shū)?-------------------

          內(nèi)容簡(jiǎn)介

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

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

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

          往期精彩文章推薦:

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

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

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

          /今日留言主題/

          隨便說(shuō)一兩句吧~~

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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一级a一级a爰片免费免软件ww | 青娱乐最新偷拍视频 | 日本亚洲免费视频 | 免费区在线观看 | 欧美性爱无码在线 |