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