学习中心
登录
已解决
爬取图片--王者荣耀课堂案例

为什么我的这串代码只爬取了一个人物图片就报错了?

from urllib import parse
import requests
from urllib import request
import os
def exact_url(data):
    image_url_lst=[]
    for i in range(1,9):
        image_url=parse.unquote(data['sProdImgNo_{}'.format(i)]).replace('200','0')
        image_url_lst.append(image_url)
    return image_url_lst

def send_request():
    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=0&iOrder=0&iSortNumClose=1&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1652669141347'
    headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36',
             'referer':'https://pvp.qq.com/'}
    resp=requests.get(url,headers=headers)
    return resp.json()

def parse_json(json_data):
    d={}
    data_lst=json_data['List']
    for data in data_lst:
        image_url_lst=exact_url(data)
        sProdName=parse.unquote(data['sProdName'])
        d[sProdName]=image_url_lst #用sProdName做键,image_url_lst做值
        # for item in d:
        #     print(item,d[item])
        save_jpg(d)
def save_jpg(d):
    for key in d:
        #拼接路径 
        dirpath=os.path.join('image',key.strip(' '))
        os.mkdir(dirpath)
        #下载图片并保存
        for index,image_url in enumerate(d[key]):
            request.urlretrieve(image_url,os.path.join(dirpath,'{}.jpg').format(index+1))
            print('{}下载完成'.format(d[key][index]))
def start():

    json_data=send_request()
    parse_json(json_data)


if __name__ == '__main__':
    start()


FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'image\\米莱狄-契约魔法壁纸'
141 1
    1个回答
    你还没有查看该回答的权限哦~请先获取查看权限
    立即查看
    写回答