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

请问为什么会出现urllib2.HTTPError: HTTP Error 400: Bad Request错误?

代码如下:

import re

import urllib2

req = urllib2.urlopen('https://www.imooc.com/course/list')

buf = req.read()

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

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

#print listurl

i = 0

for url in listurl:

    f=open("D:\\python\\LearnPython\\"+str(i)+'.jpg','wb')

    req = urllib2.urlopen('http:'+url)

    buf = req.read()

    f.write(buf)

    i=i+1


提问者:团子wwwxxx 2018-03-16 14:19

个回答

  • 芳芳菲菲
    2018-03-20 15:48:10
    已采纳

    可以在req = urllib2.urlopen('http:'+url)上面 print 'http:'+url, 就会发现问题所在。listurl = re.findall(r'//.+\.jpg*',buf)这个地方的正则错误,应该使用非贪婪匹配模式,改为listurl = re.findall(r'//.+?\.jpg',buf),即可。

  • 芳芳菲菲
    2018-03-20 15:49:49

    可以在req = urllib2.urlopen('http:'+url)上面 print 'https:'+url, 就会发现问题所在。listurl = re.findall(r'//.+\.jpg*',buf)这个地方的正则错误,应该使用非贪婪匹配模式,改为listurl = re.findall(r'//.+?\.jpg',buf),即可。

    另外:req = urllib2.urlopen('http:'+url),最好改为req = urllib2.urlopen('https:'+url)