爬取某热门游戏的皮肤【高清图片】

一、导入模块(这个部分有不懂的可以看我的文章《Python第三方库安装详细教程(图文结合)》)

import requests   # pip install requests
import os         # 内置模块,不需要安装
from time import sleep    

二、获取网站响应信息,以json()形式展示

# 请求头,用以伪装
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.37'
}
hero_name_url = "https://pvp.qq.com/web201605/js/herolist.json"
hero_name_url_response = requests.get(hero_name_url, headers=headers)
# print(response.json())
resp_json = hero_name_url_response.json()

爬取某热门游戏的皮肤【高清图片】_第1张图片

三、通过for循环遍历得到图片信息

# 创建一个空列表,方便统计ename的个数
ename_list = []
for i in resp_json:
    # print(i)
    ename = i.get('ename')
    ename_list.append(ename)
    cname = i.get('cname')
    # print(cname)
    # skin_name中的皮肤名字跟网页显示的数量不对,可以通过其他方法来获取全量的皮肤名字
    skin_name = i.get('skin_name')
    # print(skin_name.split('|'))
    # 用split方法将skin_name以'|'分割,分割后的类型是list
    pname = skin_name.split('|')
    # print(pname)

四、通过上面获取到的数据,以拼接的方式获得图片的url

   for h in range(len(pname)):
   		# 拼接图片链接
        img_url = f'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{h+1}.jpg'
        # print(img_url)
        img_url_response = requests.get(img_url,headers=headers)
        img_content = img_url_response.content
        # 通过列表下标来索引得到皮肤名字
        list_pname = pname[h]

五、创建多级文件目录,用以保存图片

    path_name = f'D:/图片/王者荣耀/{cname}'
    # makedirs是创建多级文件目录,os.path.exists用以判断目录是否存在
    if not os.path.exists(path_name):
        os.makedirs(path_name)

六、将图片写入创建好的目录下

        with open(f'{path_name}/{list_pname}.jpg','wb',) as f:
            f.write(img_content)
        print(f"{list_pname}下载完成!!!!")
        # 设置休眠时间为1s,防止程序运行过快导致IP被封
        sleep(1)

七、跳出循环(未测试,如果有问题可以删除,并不影响程序的正常运行)

# 当图片下载完后,跳出循环
  if len(ename_list) >= 114:
      break

八、成果展示





文章对你有帮助的话,麻烦点个赞吧!


特别说明:本文仅供技术交流,切勿用作非法或者商业用途。

你可能感兴趣的:(Python分享,python,pip,网络爬虫)