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



基本上,我正在尝试使用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进行压缩。当我在浏览器中访问url时,它运行良好。

有什么办法处理这个问题吗?

更新:

感谢Ben James和其他人发现问题=>添加"http://">

现在,问题得到了完善:有没有可能用一些内置函数自动处理这种情况,或者我必须用后续的字符串连接来处理错误?

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

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

正确的URL应该是http://www.tattoo-cover.co.uk/

您可以使用urllib(Python 3(中的方法urlparse来检查是否存在寻址方案(http、https、ftp(,并在不存在的情况下连接该方案:

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'

我认为可以使用urlparse函数:

Python用户文档

最新更新