小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

手把手教你使用Python網(wǎng)絡(luò)爬蟲獲取王者榮耀英雄出裝說明并自動化生成markdown文件

 Python進階者 2024-12-19 發(fā)布于廣東

以我獨沉久,愧君相見頻。

大家好,我是Python進階者。

一、前言

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

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

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

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

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

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

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

代碼實現(xiàn)過程

找到數(shù)據(jù)源之后,接下來就是代碼實現(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("</?p>""", regex=True)
item_df.des2 = item_df.des2.str.replace("</?p>""", regex=True)
item_df

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

多線程下載圖片

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

下面是代碼實現(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./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ǔ)描述""擴展描述"]
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)容如下圖所示:

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

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

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

生成Excel表格

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

item_df.圖片 = ""
item_df.基礎(chǔ)描述 = item_df.基礎(chǔ)描述.str.replace("<br>""\n")
item_df.擴展描述 = item_df.擴展描述.str.replace("<br>""\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進階者。這篇文章主要分享了一個使用Python網(wǎng)絡(luò)爬蟲獲取王者榮耀英雄出裝說明,并使用線程池的方式下載了出裝圖片,之后還自動化生成了markdown文件,干貨內(nèi)容很多,歡迎大家積極嘗試,如果有遇到問題,請?zhí)砑游液糜?,我?guī)椭鉀Q。

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

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約