问答详情
源自:4-2 python正则表达式练习

我不能把图片下载下载下来,和我用Python3有关,但我解决不了

提示错误

f.write(buf)

TypeError: write() argument must be str, not bytes

提问者:吉吉chen 2020-07-17 10:16

个回答

  • qq_主教练_0
    2020-11-04 00:26:51

    def req_url():
        req = urllib2.urlopen(url="https://coding.imooc.com/")  # 打开图片列表页面
        buf = req.read()  # 读取图片列表页面
        buf = buf.decode("utf-8")  # 将Unicode 转换为字符串 python3中返回的是unicode
        url_list = re.findall(r"//.+szimg.+\.jpg", buf)  # 提取图片url信息列表
        return url_list
    
    
    def image_save():
        i = 1
        for url in req_url():
            url = "http:" + url  # 图片url拼接
            # print(url + "\n")   # 打印图片url
            f = open("album/" + str(i) + ".jpg", "wb")  # 打开图片存放地址  以二进制格式打开,因为是图片
            try:
                req = urllib2.urlopen(url)  # 打开图片url
                buf = req.read()  # 读取图片信息
                f.write(buf)  # 保存图片
                i += 1
            finally:
                if f:
                    f.close()


  • qq_慕仙9192785
    2020-08-25 14:10:45

    这说明爬出的文件类型是bytes类型,你在打开文件的时候要使用'wb',而不是'w',这样就可以通过bytes写入了