新手求解,谢谢

来源:4-2 python正则表达式练习

清一色610

2017-08-01 15:17

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://img.mukewang.com/59802adb0001b1f106640512.jpg

写回答 关注

2回答

  • 慕粉3606827
    2017-08-03 15:22:36
    已采纳

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

    http://img.mukewang.com/5982cf170001047a10650489.jpg

    http://img.mukewang.com/5982cf1800015a9d10750491.jpg


    丶Esc36...

    好顶赞!!!!

    2017-09-04 21:45:26

    共 2 条回复 >

  • 慕粉3606827
    2017-08-03 14:45:54

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

python正则表达式

如何使用正则处理文本,带你对python正则有个全面了解

80575 学习 · 174 问题

查看课程

相似问题