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

          共 3988字,需瀏覽 8分鐘

           ·

          2022-04-13 08:57

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

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

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

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

          一、前言

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

          前幾天在【明佬】群里看到他分享了一個(gè)使用Python網(wǎng)絡(luò)爬蟲獲取王者榮耀英雄出裝說明,并使用線程池的方式下載了出裝圖片,之后還自動(dòng)化生成了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ù)詳情截圖,可以看到有中文亂碼,這個(gè)不影響,起碼數(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é)果如下圖所示:

          多線程下載圖片

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

          下面是代碼實(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ù)自動(dòng)化生成Markdown文檔,一起來看看吧。

          生成Markdown文檔

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

          item_type_dict?=?{1:?'攻擊',?2:?'法術(shù)',?3:?'防御',?4:?'移動(dòng)',?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?=?["圖片",?"裝備名稱",?"類型",?"售價(jià)",?"總價(jià)",?"基礎(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é)果如下圖所示:

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

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

          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)擊后才會(huì)放大,下面我們考慮生成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)階者。這篇文章主要分享了一個(gè)使用Python網(wǎng)絡(luò)爬蟲獲取王者榮耀英雄出裝說明,并使用線程池的方式下載了出裝圖片,之后還自動(dòng)化生成了markdown文件,干貨內(nèi)容很多,歡迎大家積極嘗試,如果有遇到問題,請(qǐng)?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í)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【

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

          瀏覽 41
          點(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>
                  在线视频国产欧美自拍 | 国产极品 国产极品 | 日韩国产精品一级毛片在线 | 啊啊啊啊啊靠逼 | 操死我网站 |