Python urlparse 给出错误的结果

标签 python parsing url urlparse

我正在尝试用 python 分隔 url 的不同部分 s 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='')

在结果中,您可以清楚地看到它混合了方案和 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='')

关于Python urlparse 给出错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45991226/

相关文章:

Python MySQL 连接器无法从 SELECT 查询返回所有结果

c++ - 在 C++ 中解析字符串,使用 char 数据类型

python - 不确定为什么 beautifulsoup 代码不会抓取网站

java - 如何使用 JSTL 区分 JSP 中的域

Python NetworkX 增加圆形图的大小

python - 考虑python发行版wx

python - 无法在 Python 的多处理中将两个列表组合成一个映射

java - 将请求的查询字符串解析为 JSON

url - 同一网址的不同映射

PHP 获取站点 URL 协议(protocol) - http 与 https