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ò)爬蟲獲取王者榮耀英雄出裝說明并自動化生成markdown文件

        共 3988字,需瀏覽 8分鐘

         ·

        2022-04-14 12:10

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

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

        以我獨(dú)沉久,愧君相見頻。

        大家好,我是Python進(jìn)階者。

        一、前言

        玩過王者榮耀游戲的小伙伴們都知道英雄出裝是十分重要的事情,一個合理的出裝,再加上銘文,可以讓你在王者戰(zhàn)場上勢如破竹,unstoppable!

        前幾天在【明佬】群里看到他分享了一個使用Python網(wǎng)絡(luò)爬蟲獲取王者榮耀英雄出裝說明,并使用線程池的方式下載了出裝圖片,之后還自動化生成了markdown文件,干貨內(nèi)容很多,這里拿出來分享給大家,歡迎大家積極嘗試。

        二、數(shù)據(jù)獲取

        這里我們的目標(biāo)網(wǎng)站是王者榮耀官網(wǎng),如下圖所示。

        之后依次點(diǎn)擊首頁右側(cè)中的【英雄/皮膚】的【更多】按鈕,可以進(jìn)入到詳情頁,如下圖所示,點(diǎn)擊【局內(nèi)道具】就可以看到出裝信息了,里邊包含了我們想要的目標(biāo)信息。

        通過瀏覽器抓包,可以獲取到具體的信息,可以看到存放在json格式中。

        下圖是數(shù)據(jù)詳情截圖,可以看到有中文亂碼,這個不影響,起碼數(shù)據(jù)是可以拿到的。

        代碼實(shí)現(xiàn)過程

        找到數(shù)據(jù)源之后,接下來就是代碼實(shí)現(xiàn)了,一起來看看吧,這里直接套用【明佬】代碼,在jupyter notebook中跑的。

        獲取裝備數(shù)據(jù)

        import?requests
        import?pandas?as?pd

        headers?=?{
        ????'User-Agent':?'Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?'
        ??????????????????'Chrome/88.0.4324.104?Safari/537.36?'
        }
        target?=?'https://pvp.qq.com/web201605/js/item.json'
        item_list?=?requests.get(target,?headers=headers).json()
        item_df?=?pd.DataFrame(item_list)
        item_df.sort_values(["item_type",?"price",?"item_id"],?inplace=True)
        item_df.fillna("",?inplace=True)
        item_df.des1?=?item_df.des1.str.replace("",?"",?regex=True)
        item_df.des2?=?item_df.des2.str.replace("",?"",?regex=True)
        item_df

        結(jié)果如下圖所示:

        多線程下載圖片

        接下來使用線程池的方法下載圖片,圖片的拼接方法也很簡單,看下圖就一目了然了。

        下面是代碼實(shí)現(xiàn):

        import?os
        from?concurrent.futures?import?ThreadPoolExecutor


        def?download_img(item_id):
        ????if?os.path.exists(f"imgs/{item_id}.jpg"):
        ????????return
        ????imgurl?=?f"http://game.gtimg.cn/images/yxzj/img201606/itemimg/{item_id}.jpg"
        ????res?=?requests.get(imgurl)
        ????with?open(f"imgs/{item_id}.jpg",?"wb")?as?f:
        ????????f.write(res.content)


        os.makedirs("imgs",?exist_ok=True)
        with?ThreadPoolExecutor(max_workers=8)?as?executor:
        ????nums?=?executor.map(download_img,?item_df.item_id)

        下載速度很快,幾秒鐘的事情,結(jié)果如下圖所示:

        接下來,我們將數(shù)據(jù)自動化生成Markdown文檔,一起來看看吧。

        生成Markdown文檔

        代碼如下,前面部分是數(shù)據(jù)的預(yù)處理,后面是寫入文件:

        item_type_dict?=?{1:?'攻擊',?2:?'法術(shù)',?3:?'防御',?4:?'移動',?5:?'打野',?7:?'游走'}
        item_ids?=?item_df.item_id.values
        item_df.item_id?=?item_df.item_id.apply(
        ????lambda?item_id:?f"![{item_id}](imgs/{item_id}.jpg)")
        item_df.item_type?=?item_df.item_type.map(item_type_dict)
        item_df.columns?=?["圖片",?"裝備名稱",?"類型",?"售價",?"總價",?"基礎(chǔ)描述",?"擴(kuò)展描述"]
        item_df

        寫入文件的代碼,生成Markdown文檔:

        with?open("王者裝備說明.md",?"w")?as?f:
        ????for?item_type,?item_split?in?item_df.groupby("類型",?sort=False):
        ????????f.write(f"#?{item_type}\n")
        ????????item_split.drop(columns="類型",?inplace=True)
        ????????f.write(item_split.to_markdown(index=False))
        ????????f.write("\n\n")

        結(jié)果如下圖所示:

        之后在本地還會生成一個名為【王者裝備說明.md】的Markdown文檔,雙擊文件打開,內(nèi)容如下圖所示:

        真是直呼好家伙!我在這一步實(shí)現(xiàn)的時候,遇到了一個報錯,如下所示:

        Missing?optional?dependency?'tabulate'.??Use?pip?or?conda?to?install?tabulate.

        提示卻少依賴庫,只需要在cmd下進(jìn)行安裝即可pip install tabulate,之后就可以正常運(yùn)行了。

        生成Excel表格

        不過Markdown的表格無法任意調(diào)整,圖片需要點(diǎn)擊后才會放大,下面我們考慮生成Excel表格:首先需要整理數(shù)據(jù),代碼如下:

        item_df.圖片?=?""
        item_df.基礎(chǔ)描述?=?item_df.基礎(chǔ)描述.str.replace("
        "
        ,?"\n")
        item_df.擴(kuò)展描述?=?item_df.擴(kuò)展描述.str.replace("
        "
        ,?"\n")
        item_df

        生成結(jié)果如下圖所示:

        之后將結(jié)果寫入到Excel中去,代碼如下所示:

        #?寫入Excel表格
        from?openpyxl.drawing.image?import?Image
        from?openpyxl.styles?import?Alignment

        with?pd.ExcelWriter("王者裝備說明.xlsx",?engine='openpyxl')?as?writer:
        ????item_df.to_excel(writer,?sheet_name='裝備說明',?index=False)
        ????worksheet?=?writer.sheets['裝備說明']
        ????worksheet.column_dimensions["A"].width?=?11
        ????for?item_id,?(cell,)?in?zip(item_ids,?worksheet.iter_rows(2,?None,?1,?1)):
        ????????worksheet.row_dimensions[cell.row].height?=?67
        ????????worksheet.add_image(Image(f"imgs/{item_id}.jpg"),?f'A{cell.row}')
        ????worksheet.column_dimensions["F"].width?=?15
        ????worksheet.column_dimensions["G"].width?=?35
        ????writer.save()

        打開文件,效果圖如下圖所示:

        當(dāng)然了,大家也可以根據(jù)自己想要的效果生成HTML和Word等等。

        三、總結(jié)

        大家好,我是Python進(jìn)階者。這篇文章主要分享了一個使用Python網(wǎng)絡(luò)爬蟲獲取王者榮耀英雄出裝說明,并使用線程池的方式下載了出裝圖片,之后還自動化生成了markdown文件,干貨內(nèi)容很多,歡迎大家積極嘗試,如果有遇到問題,請?zhí)砑游液糜?,我?guī)椭鉀Q。

        最后感謝粉絲【明佬】分享的代碼喝王者榮耀出裝攻略,真是太強(qiáng)了,上王者指日可待!

        最后放上【明佬】的csdn鏈接:https://xxmdmst.blog.csdn.net/article/details/124035041,點(diǎn)擊閱讀原文可以直達(dá)噢!

        小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何Python問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。

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

        往期精彩文章推薦:

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

        想加入Python學(xué)習(xí)群請在后臺回復(fù)【

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

        瀏覽 110
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        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>
            狠狠干网 | 男男sm捆绑调教gay视频网站 | 国产成人精品视频A片西瓜视频 | 国产精品久久久久久久漫画软件 | 欧美亚洲日本韩国高清色图 | 操逼网址大全 | 日逼录像| 操逼男女 | 日日日综合网 | 久久久无码国产精品免费 |