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

使用python+eclipse按您讲的方法提取出来的图片怎么是损坏的或无法加载的

python版本2.7,用的是chrom浏览器

import urllib2
import re

req=urllib2.urlopen('http://www.imooc.com/course/list')
buf=req.read()
#print buf
listurl =re.findall(r'http:.+\.jpg',buf)
print listurl
i=0
for url in listurl:
    f=open(str(i)+'.jpg','w')
    req=urllib2.urlopen(url)
    buf=req.read()
    f.write(buf)
    i+=1

爬取出来的图片:

5697a7500001683502400135.jpg

5697a75000014d6d02400135.jpg

请问这个是什么原因呢

提问者:what_lei 2016-01-14 21:53

个回答

  • 学习攻城狮
    2016-04-17 10:22:34

    我用30浏览器爬这个图片,按照教程来做也是出现加载不了的马赛克情况。。不知道咋回事

  • voipman
    2016-01-19 13:45:25

    import urllib2
    import re
    
    def down(url):
        return urllib2.urlopen(url)
    def downImg(page):        
        buf = down("http://www.imooc.com/course/list?page=%d"%(page)).read()
        #print buf
        imgs = re.findall(r"http:.+\.jpg", buf)
        for img in imgs:
            fname = img.split('/')[-1]
            print fname
            fn = open("img\\%s"%(fname), "wb")
            requ = down(img)        
            fn.write(requ.read())
            fn.close()
            
    for i in range(0,25):
        downImg(i)


  • voipman
    2016-01-19 13:44:01

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

    使用二进制方式打开文件,避免图片出现马赛克。

  • su_rain
    2016-01-18 13:52:51

    8好意思,取图片跟浏览器有关?