python学习之LOL英雄爬虫

86 阅读1分钟

import requests
import json
import csv
def setHeroCsv(url='https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js?ts=2747878'):
    headers={
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.39"
    }
    respone=requests.get(url,headers=headers)
    text=respone.text
    lst=json.loads(text)['hero']
    with open('doc/lol.csv','w',newline='') as csvfile:
        fieldnames=["index",'heroId','name','title','goldPrice','keywords','mainImg']
        writer=csv.DictWriter(csvfile,fieldnames=fieldnames)
        writer.writeheader()
        for index,hero_item in enumerate(lst):
            if not os.path.exists(f"lol_pic/{hero_item['heroId']}"):
                os.mkdir(f"lol_pic/{hero_item['heroId']}")
            writer.writerow({
                "index": f"0{index+1}"  if (index+1)<10 else  f"0{index+1}",
                "heroId": hero_item['heroId'],
                "name": hero_item['name'],
                "title": hero_item['title'],
                "goldPrice": hero_item['goldPrice'],
                "keywords": hero_item['keywords'] or hero_item['title']
            })
            mainImgDict=setHeroHero(hero_item['heroId'])

            for k in mainImgDict:
                for item in mainImgDict[k]:
                    pic_data = requests.get(item['mainImg'],headers=headers).content
                    with open(f"lol_pic/{hero_item['heroId']}/{item['name']}.jpg", mode='wb') as f:
                        f.write(pic_data)
            print('下载完成')
def setHeroHero(id=1):
    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.39"
    }
    resource = requests.get(f'https://game.gtimg.cn/images/lol/act/img/js/hero/{id}.js?ts=2747886', headers=headers)
    text = resource.text
    lst = json.loads(text)['skins']
    mainImgDict={}
    mainImgDict[id] = []
    for index,item in enumerate(lst):
        if(item['mainImg']):
            # end=item['mainImg'].split('/')[-1].split('.')
            # print(item['mainImg'])
            # replace= str(end[0]).replace(end[0],item['name']+'.'+end[1])
            #str(end[0]).replace(end[0],item['name']+'.'+end[1]),item['mainImg'],item['name']

            mainImgDict[id].append({'mainImg':item['mainImg'],'name':item['name']})
    return mainImgDict


setHeroCsv()