庫的安裝
1.requests? #爬取棋子數據
2.json? #棋子數據為js動態,需使用json解析
3.BeautifulSoup
實戰前先新建個lol文件夾作為工作目錄,並創建子目錄data,用於存放數據。
1.爬取數據,新建個py文件,用於爬取雲頂數據,命名為data.py
1.1定義個req函數,方便讀取。//需設定編碼格式,否則會出現亂碼
def Re_data(url):
re = requests.get(url)
re.encoding = 'gbk'
data = json.loads(re.text)
return data['data']
1.2定義個Get函數,用於讀取數據並使用保存函數進行保存數據,保存格式為json。
def Get_data():
# 獲取數據並保存至data目錄
base_url = '/images/lol/act/img/tft/js/'
chess = Re_data(base_url + 'chess.js')
race = Re_data(base_url + 'race.js')
job = Re_data(base_url + 'job.js')
equip = Re_data(base_url + 'equip.js')
Save_data(chess,race,job,equip)
1.3定義save函數實現讀取的數據進行文件保存,保存目錄為工作目錄下的data文件夾。
def Save_data(t_chess,t_race,t_job,t_equip):
with open('./data/chess.json','w') as f:
json.dump(t_chess,f,indent='\t')
with open('./data/race.json','w') as f:
json.dump(t_race,f,indent='\t')
with open('./data/job.json','w') as f:
json.dump(t_job,f,indent='\t')
with open('./data/equip.json','w') as f:
json.dump(t_equip,f,indent='\t')
1.4定義主函數main跑起來
if __name__ == '__main__':
start = time.time()
Get_data()
print('運行時間:' + str(time.time() - start) + '秒')
至此,數據爬取完成。
2.種族和職業進行組合。
2.1未完成 //未完成,使用窮舉方法進行組合會出現內存不夠導致組合失敗(for循環嵌套導致數組內存超限)
//待學習,使用知識圖譜建立組合優選,可參考:/12447.html
期間遇到的問題:
1.爬取棋子數據時為動態js加載,需通過json模塊的loads方法獲取
2.3層for循環嵌套數據量大,導致計算失敗,需優化計算方法。