我正在尝试从网页中提取链接,然后在我的网络浏览器中打开它们。我的Python程序能够成功提取链接,但有些链接之间有空格,无法使用MyService.getcustomers()
.then(function(data) {
$scope.customers = data;
})
.catch(function(error) {
console.log(error.msg);
})
打开。
例如request module
它不会使用请求模块打开。但如果我将其转换为example.com/A, B C
,它将会打开。在python中有一个简单的方法用example.com/A,%20B%20C
填充空格吗?
%20
我想将所有包含空格的链接转换为上述格式。
答案 0 :(得分:4)
urlencode
实际上需要一本字典,例如:
>>> urllib.urlencode({'test':'param'})
'test=param'`
你实际上需要这样的东西:
import urllib
import urlparse
def url_fix(s, charset='utf-8'):
if isinstance(s, unicode):
s = s.encode(charset, 'ignore')
scheme, netloc, path, qs, anchor = urlparse.urlsplit(s)
path = urllib.quote(path, '/%')
qs = urllib.quote_plus(qs, ':&=')
return urlparse.urlunsplit((scheme, netloc, path, qs, anchor))
然后:
>>>url_fix('http://example.com/A, B C')
'http://example.com/A%2C%20B%20C'
答案 1 :(得分:1)
使用url encode:
import urllib
urllib.urlencode(yourstring)
答案 2 :(得分:0)
针对@rofls答案的Python 3工作解决方案。
import urllib.parse as urlparse
def url_fix(s):
scheme, netloc, path, qs, anchor = urlparse.urlsplit(s)
path = urlparse.quote(path, '/%')
qs = urlparse.quote_plus(qs, ':&=')
return urlparse.urlunsplit((scheme, netloc, path, qs, anchor))