提示错误
f.write(buf)
TypeError: write() argument must be str, not bytes
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()
这说明爬出的文件类型是bytes类型,你在打开文件的时候要使用'wb',而不是'w',这样就可以通过bytes写入了