首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python:解析URL

python:解析URL

作者头像
超级大猪
发布2019-11-22 14:48:38
1.3K0
发布2019-11-22 14:48:38
举报

在python中,可以用urlparser包优雅的拆分URL。

拆分并分离query

# python2.7
import urlparse
parsed_data = urlparse.urlparse(url)
path = parsed_data.path
query = urlparse.parse_qs(parsed_data.query)

拼凑URL

# py2.7 这里的返回值是上面的urlparser返回的。需要特别处理一下。
import urllib
query = [(k, v) for k, vlist in query.iteritems() for v in vlist]
query = urllib.urlencode(query)

从URL中去除不需要的参数

import urlparse
import urllib
import time

url_enable_query = set(["rs_id"])
def remove_url_query(url):
    parsed_data = urlparse.urlparse(url)
    path = parsed_data.path
    query = urlparse.parse_qs(parsed_data.query)

    query = [(k, v) for k, vlist in query.iteritems() if k in url_enable_query for v in vlist ]
    query = urllib.urlencode(query)
    return "{}?{}".format(path, query)

这个函数的性能实在太差了。10000次用了整整45s。 在不严格的情况下,自己用split进行判定会好很多。快了12倍。

import urlparse
import urllib
import time

url_enable_query = set(["rs_id"])
def remove_url_query2(url):
    parsed_data = url.split("?")
    path = parsed_data[0]
    if len(parsed_data) == 1:
        return path

    query = parsed_data[1]
    query = query.split("&")
    query = "&".join([x for x in query if x.split("=")[0] in url_enable_query])
    return "{}?{}".format(path, query)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-06-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 拆分并分离query
  • 拼凑URL
  • 从URL中去除不需要的参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档