Python 修复不带http的url的正确方法://
我正试图在Python 修复不带http的url的正确方法://,python,url,urllib2,urllib,Python,Url,Urllib2,Urllib,我正试图在Urllib2中使用打开此格式的URL列表: google.com facebook.com youtube.com yahoo.com baidu.com 使用此方法: urllib2.urlopen(url): 得到这个错误: File "fetcher.py", line 98, in fetch_urls_and_save response = urllib2.urlopen(url) File "urllib2.py", line 154, in urlopen r
Urllib2
中使用打开此格式的URL列表:
google.com
facebook.com
youtube.com
yahoo.com
baidu.com
使用此方法:
urllib2.urlopen(url)
:
得到这个错误:
File "fetcher.py", line 98, in fetch_urls_and_save
response = urllib2.urlopen(url)
File "urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "urllib2.py", line 423, in open
protocol = req.get_type()
File "urllib2.py", line 285, in get_type
raise ValueError, "unknown url type: %s" % self.__original
所以,我的问题是:
有没有合适的方法来“修复”这些URL,或者我应该简单地在每个字符串前面附加http://
?我认为这不是最好的解决方案,因为以https://
开头的URL呢?我建议只将http://
附加到字符串中,因为使用https://
方案的站点会通过重定向请求自动切换到该字符串
您可以使用getcode()
函数检查urlopen
返回的状态
a=urllib2.urlopen("http://google.com")
print a.getcode() # prints 200
我建议将http://
添加到字符串中,因为使用https://
方案的站点会通过重定向请求自动切换到该字符串
您可以使用getcode()
函数检查urlopen
返回的状态
a=urllib2.urlopen("http://google.com")
print a.getcode() # prints 200
只需前缀http://
。如果有一个服务器可以与您进行HTTP对话,它将返回200OK
。如果它想使用HTTPS,它将使用301
重定向。此页面上的所有示例都显示“http://”。Lutz是正确的,请检查HTTP状态以获得重定向。您的意思是,如果我得到301
,我应该尝试https://
?或者它会自动重定向?@bmpasini,301
代码表示重定向。由您决定是否要重定向(使用https://
请求页面)。严格来说,这些根本不是URL。在许多人类上下文中,您可以省去协议说明符部分,仍然可以理解,但如果没有这种上下文,您所拥有的只是一个(明显的)服务器名称列表,其中一些或所有名称可能正在运行HTTP服务器,该服务器响应特定域名的请求。当然,在http://
前缀上加上前缀并尝试是一个很好的发现方法。只需加前缀http://
。如果有一个服务器可以与您进行HTTP对话,它将返回200OK
。如果它想使用HTTPS,它将使用301
重定向。此页面上的所有示例都显示“http://”。Lutz是正确的,请检查HTTP状态以获得重定向。您的意思是,如果我得到301
,我应该尝试https://
?或者它会自动重定向?@bmpasini,301
代码表示重定向。由您决定是否要重定向(使用https://
请求页面)。严格来说,这些根本不是URL。在许多人类上下文中,您可以省去协议说明符部分,仍然可以理解,但如果没有这种上下文,您所拥有的只是一个(明显的)服务器名称列表,其中一些或所有名称可能正在运行HTTP服务器,该服务器响应特定域名的请求。当然,找到http://
前缀并尝试是一个很好的方法。