Python urlparser给出了错误的结果
问题描述:
我试图用python 的urlparse分开url的不同部分,但我似乎在结果中得到了错误的值。Python urlparser给出了错误的结果
baseline = runSql(conn,"Select url from malware_traffic where tag = 'baseline';")
for i in baseline:
print i[0]
print urlparse.urlparse(i[0])
runSql函数只是返回一个url列表。我依次通过他们,并试图从基线变量到URL中打开的网址,但是Python的方式解析的网址似乎是不正确
172.217.9.174:443/c2dm/register3
ParseResult(scheme='172.217.9.174', netloc='', path='443/c2dm/register3', params='', query='', fragment='')
connectivitycheck.gstatic.com:80/generate_204
ParseResult(scheme='connectivitycheck.gstatic.com', netloc='', path='80/generate_204', params='', query='', fragment='')
www.google.com:80/gen_204
ParseResult(scheme='www.google.com', netloc='', path='80/gen_204', params='', query='', fragment='')
172.217.9.174:443/auth/devicekey
ParseResult(scheme='172.217.9.174', netloc='', path='443/auth/devicekey', params='', query='', fragment='')
在你可以清楚地看到,它是计划和netloc混合起来的结果以及将路径包括在内。
例如,第一个结果应该是这样的。
ParseResult(scheme='', netloc='172.217.9.174:443', path='/c2dm/register3', params='', query='', fragment='')
不知道为什么它会变得混乱。
我实际上使用相同的东西作为这里的文档https://docs.python.org/2/library/urlparse.html的例子之一。
那么我做错了什么或者它是一个错误?
答
问题是您的网址没有方案(http://
部分),所以Python认为172.217.9.174:
是该方案。与http://
一切前缀按预期工作:
>>> urlparse('172.217.9.174:443/c2dm/register3')
ParseResult(scheme='172.217.9.174', netloc='', path='443/c2dm/register3', params='', query='', fragment='')
>>> urlparse('http://172.217.9.174:443/c2dm/register3')
ParseResult(scheme='http', netloc='172.217.9.174:443', path='/c2dm/register3', params='', query='', fragment='')
您的网址没有开始'HTTP://',甚至''//,这_specifically_提到的文档。 –