ValueError:urllib2中的未知url类型,但如果在浏览器中打开则url很好

时间:2011-04-28 18:54:40

标签: python urllib2 httprequest

基本上,我正在尝试使用python中的urllib2下载URL。

代码如下:

import urllib2
req = urllib2.Request('www.tattoo-cover.co.uk')
req.add_header('User-agent','Mozilla/5.0')
result = urllib2.urlopen(req)

它输出ValueError,程序会破坏示例中的URL。 当我在浏览器中访问网址时,它可以正常工作。

任何想法如何处理问题?

更新

感谢Ben James,并且检测到问题=>添加'http://'

现在问题得到改善: 是否可以使用某些内置函数自动处理此类情况,或者我必须使用后续字符串连接进行错误处理?

4 个答案:

答案 0 :(得分:30)

在没有协议的浏览器中输入URL时,默认为HTTP。 urllib2不会为你做出这样的假设;你需要在http://前面添加前缀。

答案 1 :(得分:5)

您必须使用包含协议的完整URL,而不仅仅是指定主机名。

正确的网址为http://www.tattoo-cover.co.uk/

答案 2 :(得分:1)

您可以使用urlparse中的方法urllib(Python 3)来检查寻址方案(http,https,ftp)的存在,并在不存在该方案的情况下将其串联起来: / p>

In [1]: from urllib.parse import urlparse
    ..: 
    ..: url = 'www.myurl.com'
    ..: if not urlparse(url).scheme:
    ..:     url = 'http://' + url
    ..: 
    ..: url
Out[1]: 'http://www.myurl.com'

答案 3 :(得分:0)

你可以使用urlparse函数 :

Python User Documentation