Python urlparser给出错误的resu

2024-09-24 02:17:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python来分离url的不同部分 是urlparse,但我似乎在结果中得到了错误的值。你知道吗

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从基线变量转换为url,但是python解析url的方式似乎不正确

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='')

在结果中,您可以清楚地看到它混淆了scheme和netloc以及在path中包含端口。你知道吗

例如,第一个结果应该是这样的。你知道吗

ParseResult(scheme='', netloc='172.217.9.174:443', path='/c2dm/register3', params='', query='', fragment='')

不知道为什么会搞砸。你知道吗

我实际上使用了与文档中的一个例子相同的东西https://docs.python.org/2/library/urlparse.html。你知道吗

那么我做错了什么,还是一只虫子?你知道吗


Tags: pathcomurlparamsqueryschemeprinturlparse
1条回答
网友
1楼 · 发布于 2024-09-24 02:17:18

问题是您的url没有一个方案(方案的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='')

相关问题 更多 >