|

楼主 |
发表于 2020-10-10 21:21:45
|
显示全部楼层
class WZskin():
def __init__(self):
self.Did_LskinId_skinNameLD ={}
pass
def get_all_id(self):
url =r'https://pvp.qq.com/web201605/js/herolist.json'
response =requests.get(url)
response.encoding =response.apparent_encoding
for i in response.json():
id =i['ename']
self.Did_LskinId_skinNameLD[id] =[]
def get_skinId_skinName_from_id(self ,id):
url =f'https://pvp.qq.com/web201605/herodetail/{id}.shtml'
response = requests.get(url)
response.encoding = response.apparent_encoding
soup =bs4.BeautifulSoup(response.text ,'lxml')
heroName =soup.select('.cover-name')[0].text
print(f'正在整理{heroName}的数据...')
L_skinName =soup.select('.pic-pf-list')[0]['data-imgname'].split('|')
for skinId ,baseSkinName in enumerate(L_skinName ,1):
skinName =heroName +' ' +baseSkinName.split('&')[0].replace(heroName ,'')
self.Did_LskinId_skinNameLD[id].append([skinId ,skinName])
print('Done.\n')
def endLoad(self ,id ,skinId ,skinName):
url =f'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{id}/{id}-bigskin-{skinId}.jpg'
res =requests.get(url)
with open(skinName+'.jpg' ,'wb') as f:
f.write(res.content)
def testMain(self):
self.get_all_id()
for id in self.Did_LskinId_skinNameLD:
self.get_skinId_skinName_from_id(id)
os.mkdir('王者_皮肤_结果')
os.chdir('王者_皮肤_结果')
for id ,L_skinInfo in self.Did_LskinId_skinNameLD.items():
for skinID ,skinName in L_skinInfo:
print(f'下载{skinName}中')
self.endLoad(id ,skinID ,skinName)
print('Done.\n')
os.chdir(os.pardir)
try_ =WZskin()
try_.testMain()
昨天写的,用的逻辑可能和你的是一样的(补充完整基础url).可选写这个的逻辑用不到爬LOLl里(例如暴走萝莉 金克斯的 她的皮肤id顺序不是按1234这样连续的.而lol皮肤ld ,我好像没在html找到)
而且你的这个答案...如之前问的lol爬取问题一样 ,有爬取空图的风险... |
|