为了账号安全,请及时绑定邮箱和手机立即绑定

图片爬到后存储文件,windows下,打开图片失败

req = urllib2.urlopen('https://www.imooc.com/')   #抓取网页
buf = req.read()   #返回一个str
listurl = re.findall(r'//.+\.jpg',buf)   #利用

print listurl
i = 0
for url in listurl:
   f = open(str(i)+'.jpg','w')
   url1 = 'http:'+url   #因为没有http开头,报错,所以我每个元素手动添加了
   req = urllib2.urlopen(url1)    #遍历打开网址
   bug = req.read()
   f.write(buf)
   i += 1
   if i == 10:
       break
   f.close()

在windows下,打开图片提示图片出错,求解答??

谢谢大家了!!!


正在回答

4 回答

buf = req.read().decode("utf-8") 没写decode图片出来一半或是错的图片,加了就正确了,谢谢

0 回复 有任何疑惑可以回复我~


import re

import urllib


req = urllib.request.urlopen('http://www.imooc.com/course/list')

#此处加上decode(),不然拿下来的数据都是乱码

buf = req.read().decode("utf-8")


#老师讲课的url地址已经发生改变,改一下正则匹配就好

# listurl = re.findall(r'src=.+\.jpg', buf)

listurl = re.findall(r'//img.+?\.jpg', buf)

# 改成非贪婪模式就行了



#前面没有了http:,那么这里手动加上

for index,app_id in enumerate(listurl):

    listurl[index] = str(app_id).replace('//', 'http://')

    print(index, listurl[index])

print(listurl)



i = 0

for url in listurl:

    #写入模式修改为“wb+”,不然不支持将bytes写入,亲测

    f = open(str(i)+".jpg", "wb+")

    req = urllib.request.urlopen(url)

    buf = req.read()

    f.write(buf)

    i+=1


3 回复 有任何疑惑可以回复我~
#1

陈ff

多谢指导。 我用的python2.7 没有request模块 用的urllib2.urlopen(url) 另外: listurl = re.findall(r'//img.+?\.jpg', buf) 这个搂出来的图片有重复 2次 后来改为了listurl = re.findall(r'src=".+?\.jpg', buf) 然后后面的listurl[index] = str(app_id).replace('src="', 'http:') 这样下载下来的 没有重复的图片了。
2018-05-09 回复 有任何疑惑可以回复我~
#2

qq_雙子_04312075 回复 陈ff

多谢你的经验
2018-11-27 回复 有任何疑惑可以回复我~

我用的pycharm,今天才手写的代码,改了几个小地方,楼主看看注意到没有,谢谢。

re
urllib

req = urllib.request.urlopen()
buf = req.read().decode()

listurl = re.findall(buf)
indexapp_id (listurl):
    listurl[index] = (app_id).replace()
    (indexlisturl[index])
(listurl)


i = url listurl:
    f = ((i)+)
    req = urllib.request.urlopen(url)
    buf = req.read()
    f.write(buf)
    i+=


0 回复 有任何疑惑可以回复我~

重新爬去


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

图片爬到后存储文件,windows下,打开图片失败

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信