爬取王者荣耀全皮肤
import requests
from urllib import parse
from urllib import request
import os
import time
import random
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36",
"Referer": "https://pvp.qq.com/web201605/wallpaper.shtml"
}
# 获取每个英雄皮肤的所有分辨率地址,选择高清大图
def extract_images(data):
image_urls = []
for x in range(1, 9):
image_url = parse.unquote(data['sProdImgNo_%d'%x]).replace("200", "0") # 获取皮肤所有分辨率地址,选择高清大图
image_urls.append(image_url)
return image_urls
def main():
for x in range(18):
# 控制page 获取18页的皮肤
page_url = 'https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=0&page={page}&iOrder=0&iSortNumClose=1&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735'.format(page=x)
resp = requests.get(page_url, headers=headers)
# 获取json内容
result = resp.json()
#列表形式存放
datas = result['List']
for data in datas:
# 获取每个英雄皮肤的所有分辨率地址
image_urls = extract_images(data)
# 解码皮肤地址 去掉空格
name = parse.unquote(data['sProdName']).replace("1:1", "").strip()
# 创建存放路劲
dirpath = os.path.join('C:/Users/pactera/Desktop/Test/jp', name)
# 判断文件名是否存在
if not os.path.exists(dirpath):
os.mkdir(dirpath)
# 保存图片
for index, image_url in enumerate(image_urls):
request.urlretrieve(image_url, os.path.join(dirpath, "%d.jpg" % (index+1)))
print("%s下载完成!" % image_url)
# 设置随机休眠时间防止反爬虫
time.sleep(random.randint(1, 7))
if __name__ == '__main__':
main()