爬取 lol全皮肤原画
程序员文章站
2022-04-30 18:29:23
...
这真是初学者的乐趣 …^_^
这官网点击查看源码发现 毛都没有。。
这能这样,进入这个页面并点击第一个英雄
发现
然后查看第二个英雄同个地方的url
发现除了这个数字其他一样 嘿嘿。。 遍历全英雄的问题解决了
然后查看服务器返回的信息
都是明文的json数据,太棒了
到这里其实需要的信息已经收集完了,可以写代码了 ,先说一下实际运行碰到的问题:
url编号不规律 不是146 而是555
其中有的炫彩皮肤没有url
好了附上代码:
import os
import json
import requests
def get_url(url, hander): #获取页面数据
try:
r = requests.get(url, headers=hander, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except requests.exceptions.ConnectTimeout:
print("(1)连接超时")
return ""
except requests.exceptions.HTTPError as e:
print(e)
return ""
def prasing_page(html, hander, n):
s = 0 #定义变量方便一会儿输出进度条
py_data = json.loads(html) #json数据转换成python数据
hero_skins_list = py_data['skins']
os.mkdir('O:\lol_hero_jpg\\'+hero_skins_list[0]['heroName']+'--'+hero_skins_list[0]['heroTitle']) #创建文件夹
os.chdir('O:\lol_hero_jpg\\'+hero_skins_list[0]['heroName']+'--'+hero_skins_list[0]['heroTitle']) #进入文件夹
for i in hero_skins_list:
try: #如果有问题跳过本次循环进行下一次
if i['mainImg'] == "": #如果图片url为空则跳过本次循环
continue
s = s + 1
with open(i['name']+'.jpg', 'wb') as f:
r = requests.get(i['mainImg'], headers=hander, timeout=30)
f.write(r.content)
f.close()
print("\r当前进度>>>第 {} 位英雄 {} >>>{:.0f}%----------总进度{:.0f}%".format(n, hero_skins_list[0]['heroTitle'], s * 100 / len(hero_skins_list), n * 100/146), end="")
except:
continue
def main():
hander = {"User-Agent": "Mozilla/5.0"}
hero_number = 555
n = 0 #变量表示第几位英雄
for i in range(hero_number):
try:
n = n+1
url = "https://game.gtimg.cn/images/lol/act/img/js/hero/"+str(i+1)+".js"
html = get_url(url, hander)
prasing_page(html, hander, n)
except:
n = n - 1
continue
main()
运行效果:
最后附上几张比较喜欢的英雄原画^_^