2014-05-07 127 views
0

我玩弄Python和这里面的,我试图用它是这样的的Python urllib2.urlopen在URL

https://[[email protected]]:[password]@domain.com/blah 

这是一个URL @符号是我的代码:

response =urllib2.urlopen("https://[[email protected]]:[password]@domain.com/blah") 
html = response.read() 
print ("data="+html) 

这没有经过,它不喜欢@符号,也可能是:也是。我尝试了搜索,并且阅读了一些关于无引号的内容,但这没有做任何事情。这是我得到的错误:

raise InvalidURL("nonnumeric port: '%s'" % host[i+1:]) 
httplib.InvalidURL: nonnumeric port: '[email protected]' 

我该如何解决这个问题?实际的网站是“https://updates.opendns.com/nic/update?hostname=

谢谢!

回答

0

使用进行urlencode!不知道是否有urllib2的,但的urllib有一个用urlencode功能,1秒,我会尽快回复您。

我做了一个快速检查,看来你需要改用urrlib的urllib2的为...进口的urllib,然后使用urllib.urlencode(您的网址)应该工作

import urllib 
url = urllib.urlencode(<your_url_here>) 

编辑:!它实际上urlllib2。报价()!

+0

好的,我会尝试 – Groovdafied

+0

我可能会得到一个例子吗?我正在阅读文档,但它不能解决问题。 – Groovdafied

+0

尝试在我的编辑中张贴的代码。 – deweyredman

1

URI有一堆保留字符,用于分隔URI的可区分部分(/,?,&,@few others)。如果这两个字符中的任何一个出现在任一用户名(您的情况为@)或密码中,则他们需要进行百分比编码或URI变得无效。

在Python 3:

>>> from urllib import parse 
>>> parse.quote("[email protected]?") 
'p%40ssword%3F' 

在Python 2:

>>> import urllib 
>>> urllib.quote("[email protected]?") 
'p%40ssword%3F' 

另外,不要放在方括号中的用户名和密码,这是不是有效,或者。

+0

我完全挠头这个...我使用urllib导入解析,但我得到一个错误说:“ImportError:无法导入名称解析。这是我想要查询的网址,它将发回我要输出的基本文本hxxps://[email protected]:[email protected]/hosts=host 我有Python 2.7.6 - 感谢您的支持帮帮我! – Groovdafied

相关问题