1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 手把手教你使用python获取王者荣耀英雄及皮肤高清图片

手把手教你使用python获取王者荣耀英雄及皮肤高清图片

时间:2023-03-07 22:27:20

相关推荐

手把手教你使用python获取王者荣耀英雄及皮肤高清图片

利用requests库和os库,大概30行代码,就能把页面上的图片给爬取下来!

打开百度搜索“王者荣耀”进入官网:/,按F12进入调试界面,然后按F5刷新界面,图中标识的herolist.json文件就是我们所需要的英雄列表,其中包括英雄编号、英雄名称、英雄类型、皮肤的名称等信息,在文件上右击复制链接/web05/js/herolist.json

还说这么多干什么嘞,直接上代码

代码如下所示:

(方法一)

# -*- coding: utf-8 -*-"""__title__ = '爬取王者荣耀英雄及皮肤高清图片'__author__ = '张佑'__mtime__ = '/04/06'# code is far away from bugs with the god animal protectingI love animals. They taste delicious.┏┓┏┓┏┛┻━━━┛┻┓┃☃┃┃ ┳┛ ┗┳ ┃┃┻┃┗━┓┏━┛┃┗━━━┓┃ 神兽保佑 ┣┓┃永无BUG! ┏┛┗┓┓┏━┳┓┏┛┃┫┫ ┃┫┫┗┻┛ ┗┻┛"""import osimport requests#获取所有英雄列表json文件url = '/web05/js/herolist.json'herolist = requests.get(url) # 获取英雄列表json文件herolist_json = herolist.json() # 转化为json格式hero_name = list(map(lambda x: x['cname'], herolist.json())) # 提取英雄的名字hero_number = list(map(lambda x: x['ename'], herolist.json())) # 提取英雄的编号# 下载壁纸图片def downloadHeroPic():i = 0for j in hero_number:# 创建文件夹os.mkdir("D:\\PycharmProjects\\test\\zy\\" + hero_name[i])# 进入创建好的文件夹os.chdir("D:\\PycharmProjects\\test\\zy\\" + hero_name[i])i += 1#一般英雄皮肤数小于10,我们这里用10来遍历,如果存在就保存到本地for k in range(10):# 拼接urlonehero_link = '/images/yxzj/img06/skin/hero-info/' + str(j) + '/' + str(j) + '-bigskin-' + str(k) + '.jpg'im = requests.get(onehero_link) # 请求urlif im.status_code == 200:open(str(k) + '.jpg', 'wb').write(im.content) # 写入文件downloadHeroPic()print('完成啦!!!')

请求url的时候有时需要设置代理服务器,因为连续大量的请求,服务器会认为这是黑客攻击,会拒绝你当前ip的连接,导致请求失败,严重的话服务器会把你的ip或者与你同网段的ip地址拉入黑名单,导致一段时间无法访问连接。

当然,我们也有另一种方法:

(方法二)

# -*- coding: utf-8 -*-"""__title__ = '爬取王者荣耀英雄及皮肤高清图片'__author__ = '张佑'__mtime__ = '/04/06'# code is far away from bugs with the god animal protectingI love animals. They taste delicious.┏┓┏┓┏┛┻━━━┛┻┓┃☃┃┃ ┳┛ ┗┳ ┃┃┻┃┗━┓┏━┛┃┗━━━┓┃ 神兽保佑 ┣┓┃永无BUG! ┏┛┗┓┓┏━┳┓┏┛┃┫┫ ┃┫┫┗┻┛ ┗┻┛"""from urllib import request, parseimport requests# 设置request代理服务器proxy_support = request.ProxyHandler({'http': 'http://xx.xx.xx.xx:xx'})opener = request.build_opener(proxy_support, request.HTTPHandler)request.install_opener(opener)# 设置requests代理服务器ip, port = ("125.126.222.12", "9999")proxy_url = "http://{0}:{1}".format(ip, port)proxy_dict = {'https': proxy_url,}class wzry(object):def __init__(self):self.page = 0 # 抓取的起始页self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64)'} # 伪装成浏览器def get_page(self):try:while self.page <= 10: # 设置抓取的结束页url = 'https://apps./cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?' \'activityId=2735&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=0&page=' + str(self.page) + '&i' \'Order=0&iSortNumClose=1&iAMSAc' \'tivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&' \'iActId=2735&iModuleId=2735&_=1554873059538'self.page = self.page + 1req = request.Request(url, headers=self.headers)response = request.urlopen(req)data = response.read()list_data = eval(data)['List']for ls in list_data:# 抓取图片url并替换特殊符号sProdImgNo_6 = ls['sProdImgNo_6'].replace('%3A', ':').replace('%2F', '/').replace('%2E','.').replace('%5F', '_').replace('%2D', '-').replace('200', '0')sProdName = ls['sProdName']img_name = parse.unquote(sProdName) # 解码字符串img = requests.get(sProdImgNo_6, proxies=proxy_dict, verify=False) # 抓取图片print(f'正在抓取 {img_name} 高清皮肤......')# 写入文件with open(f'D:/PycharmProjects/test/{img_name}.jpg', 'wb') as f:f.write(img.content)except request.URLError as e:if hasattr(e, 'reason'):print(f'抓取失败,失败原因:{e.reason}')class main():wzry().get_page()if __name__ == '__main__':main()print('抓取完成。。。')

最终结果如下所示:

当然,如果你想要获取这些资源,但是你却比较懒,你也可以点击后面的这个链接:王者荣耀英雄及皮肤高清图片

或者扫描二维码,回复关键字“王者荣耀”

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。