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

新手求解,谢谢

import urllib.request
import re


req = urllib.request.urlopen('http://www.imooc.com/course/list')
buf = req.read().decode('utf-8')
listurl = re.findall(r'http:.+\.jpg',buf)
print(listurl)

i = 0
for url in listurl:
    f = open(str(i)+'.jpg','wb')
    req = urllib.request.urlopen(url)
    buf = req.read()
    f.write(buf)
    i += 1
    f.close()

出现问题:http://img1.sycdn.imooc.com//59802adb0001b1f106640512.jpg

正在回答

3 回答

我自己试了一下,发现会读取出这种如图1的结果,我个人猜测是因为在正则表达式中使用了+这个贪婪模式的字符,所以会尽量匹配多的字符,所以看图中就知道,它把两个地址的字符串都匹配进去了,因为两个字符串连接在一起也是http开头,.jpg结尾的,把“listurl = re.findall(r'http:.+\.jpg',buf)”改成“listurl = re.findall(r'http:.+?\.jpg',buf)”,读取的结果就正确了。以上是个人观点,如有不足之处还望指出。

http://img1.sycdn.imooc.com//5982cf170001047a10650489.jpg

http://img1.sycdn.imooc.com//5982cf1800015a9d10750491.jpg


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

清一色610 提问者

嗯嗯,我改了,也正确了,谢谢!
2017-08-04 回复 有任何疑惑可以回复我~
#2

丶Esc3626950

好顶赞!!!!
2017-09-04 回复 有任何疑惑可以回复我~

你抓取的地址貌似不正确吧?打印的地址之中还带有“src=”的

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

举报

0/150
提交
取消

新手求解,谢谢

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