weixin_41581686 2021-11-19 02:26 采纳率: 100%
浏览 415
已结题

HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 404: Not Found


from urllib import  parse
import requests
import os
from urllib import request
# result = parse.unquote("https%3A%2F%2Fshp%2Eqpic%2Ecn%2Fishow%2F2735111614%2F1637043312%5F84828260%5F13173%5FsProdImgNo%5F8%2Ejpg%2F200")
# print(result)

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&_=1637242615737"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36",
    "Referer": "https://pvp.qq.com/"
}

def exact_url(data):
    url_list=[]
    for i in range(1,9):
        url = parse.unquote(data['sProdImgNo_%d'%i]).replace('200','0')
        url_list.append(url)
    return url_list

def main():


    result = requests.get(url,headers=headers).json()
    datas = result['List']
    for i,data in enumerate(datas):
        url_list = exact_url(data)
        name=parse.unquote(data["sProdName"])
        if name=="六周年庆壁纸":
            name=name+("%d"%(i-3))
        dirpath=os.path.join("images",name)
        os.mkdir(dirpath)
        for index,image_url in enumerate(url_list):
            request.urlretrieve(image_url,os.path.join(dirpath,"%d.jpg"%(index+1)))
            print("%s下载完成!"%image_url)
  • 写回答

2条回答 默认 最新

  • CSDN专家-文盲老顾 2021-11-19 08:41
    关注

    我这边实际测试了下,代码基本没有问题,你自己捕捉下异常,看看哪个url报的404

    
            for index,image_url in enumerate(url_list):
                try:
                    request.urlretrieve(image_url,os.path.join(dirpath,"%d.jpg"%(index+1)))
                    print("%s下载完成!"%image_url)
                except:
                    print(name,image_url)
    
    

    自己加上异常捕捉

    img

    img

    网上存在着各种死链(404)、权限受限(403)、代码错误(500)等等情况,你需要自己在采集的时候只处理2xx的内容,其他都当做异常处理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月27日
  • 已采纳回答 11月19日
  • 创建了问题 11月19日

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加