专栏首页python3Python3 urllib.parse

Python3 urllib.parse

1、获取url参数。

>>> from urllib import parse
>>> url = r'https://docs.python.org/3.5/search.html?q=parse&check_keywords=yes&area=default'
>>> parseResult = parse.urlparse(url)
>>> parseResult
ParseResult(scheme='https', netloc='docs.python.org', path='/3.5/search.html', params='', query='q=parse&check_keywords=yes&area=default', fragment='')
>>> param_dict = parse.parse_qs(parseResult.query)
>>> param_dict
{'q': ['parse'], 'check_keywords': ['yes'], 'area': ['default']}
>>> q = param_dict['q'][0]
>>> q
'parse'
#注意:加号会被解码,可能有时并不是我们想要的
>>> parse.parse_qs('proxy=183.222.102.178:8080&task=XXXXX|5-3+2')
{'proxy': ['183.222.102.178:8080'], 'task': ['XXXXX|5-3 2']}

2、parse_qs/parse_qsl

>>> from urllib import parse
>>> parse.parse_qs('action=addblog&job=modify&tid=1766670')
{'tid': ['1766670'], 'action': ['addblog'], 'job': ['modify']} #注意和第三个并不一样
>>> parse.parse_qsl('action=addblog&job=modify&tid=1766670')
[('action', 'addblog'), ('job', 'modify'), ('tid', '1766670')]
>>> dict(parse.parse_qsl('action=addblog&job=modify&tid=1766670')) #注意和第一个并不一样
{'tid': '1766670', 'action': 'addblog', 'job': 'modify'}

3、urlencode

>>> from urllib import parse
>>> query = {
	'name': 'walker',
	'age': 99,
	}
>>> parse.urlencode(query)
'name=walker&age=99'

4、quote/quote_plus

>>> from urllib import parse
>>> parse.quote('a&b/c')    #未编码斜线
'a%26b/c'
>>> parse.quote_plus('a&b/c')    #编码了斜线
'a%26b%2Fc'

5、unquote/unquote_plus

from urllib import parse
>>> parse.unquote('1+2')    #不解码加号
'1+2'
>>> parse.unquote('1+2')    #把加号解码为空格
'1 2'

  如果你还想问为什么没有urldecode——再把示例1看五遍。^_^

6、域名编码避免敏感词屏蔽。

>>> ''.join('%' + ('%x'%ord(ch)).upper() for ch in 'github.com')
'%67%69%74%68%75%62%2E%63%6F%6D'

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【python项目实战】BBS论坛(3)

    不同板块之间跳转,根据category的id来设计url,实现不同url之间的跳转

    py3study
  • Python URL编解码 encode

    py3study
  • Python之 ansible 动态In

    Ansible Inventory 是包含静态 Inventory 和动态 Inventory 两部分的,静态 Inventory 指的是在文件中指定的主机和组...

    py3study
  • PHP源码分析之parse_url()的2个小trick

    之前从phithon师傅的代码审计小密圈看到pupiles师傅发过一篇文章,讲了parse_url()的很多小tricks,可惜只是给出了tricks的利用方法...

    ChaMd5安全团队
  • 微软推出硬件测试套件HMD Exerciser,为开发者提供多种测试方法

    VRPinea
  • windows完成端口(二)

    系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) ...

    范蠡
  • python基础-列表(7)

    3、insert(index, object) 在指定位置index前插入元素object

    Se7eN_HOU
  • 常见端口转发工具的使用方式

    NetCat NetCat是一个非常简单的Unix工具,可以读、写TCP或UDP网络连接。 用途: 1: 侦听/传输模式 2:获取banner信息 3:传输文...

    ChaMd5安全团队
  • Linux端口转发的几种常用方法

    在一些实际的场景里,我们需要通过利用一些端口转发工具,比如系统自带的命令行工具或第三方小软件,来绕过网络访问限制触及目标系统。

    Bypass
  • Java学习笔记第一篇:坦克大战游戏

    一、Java学习笔记系列 笔者大学时候学的编程语言是C和汇编,毕业以后并未从事过开发工作,也没有接触过Java。但近两年的PaaS、CI/CD主要是以Java应...

    魏新宇

扫码关注云+社区

领取腾讯云代金券