8.1 Python网络模块概述与urllib.parse模块解析、恢复url和查询字符串(url参数)

1、网络模块概述与urllib.parse模块解析、恢复url和查询字符串(url参数)

0)网络分层及协议

在这里插入图片描述

1)Pyhton的网络模块

  • spcket:基于传输层 TCP、UDP 协议进行网络编程的模块
  • email:Email 和 MIME 消息处理模块
  • smtplib:支持 SMTP 协议(发送邮件)的客户端模块
  • poplib:支持 POP3 协议的客户端模块
  • urllib及其子模块:支持 URL 处理的模块

2)使用urllib.parse模块解析、恢复url

(1)解析 url:
  • urlparse():将 url字符串解析成各部分,返回值为 ParseResult(tuple 的子类)

    import urllib.parse
    
    s = 'http://www.fkjava.org:80/index.html;parm?name=user#title'
    
    # 解析 url 字符串
    r = urllib.parse.urlparse(s)
    print(r, type(r))  
    print('-'*40)
    
    print('协议:', r.scheme, '|', r[0])
    print('位置:', r.netloc, '|', r[1])
    print('资源路径:', r.path, '|', r[2])
    print('参数:', r.params, '|', r[3])
    print('查询字符串:', r.query, '|', r[4])
    print('fragement:', r.fragment, '|', r[5])
    
    ParseResult(scheme='http', netloc='www.fkjava.org:80', path='/index.html', params='parm', query='name=user', fragment='title') <class 'urllib.parse.ParseResult'>
    ----------------------------------------
    协议: http | http
    位置: www.fkjava.org:80 | www.fkjava.org:80
    资源路径: /index.html | /index.html
    参数: parm | parm
    查询字符串: name=user | name=user
    fragement: title | title
    
(2)恢复 url:
  • urlunparse():将 url 各部分(ParseResult或tuple))恢复成 url 字符串

    tu = ('http', 'www.fkjava.org:80', '/index.html', 'parm', 'name=user', 'title')   
    print(urllib.parse.urlunparse(tu))     # 恢复 url 字符串
    
    http://www.fkjava.org:80/index.html;parm?name=user#title
    

3)使用urllib.parse解析、恢复查询字符串

(1)查询字符串(url 参数)
  • 说明:将发送给服务器的数据添加到URL中。
  • 格式:将“?”放在 url 的末尾,再加上“参数=值”(key=value),多个参数用“&”隔开。
(2)解析查询字符串
  • parse_qs():返回字典

    # 查询字符串
    qs = 'name=user1&name=user2&age=25&height=180'
    print(urllib.parse.parse_qs(qs))     
    
    {'name': ['user1', 'user2'], 'age': ['25'], 'height': ['180']}
    
  • parse_qsl():返回列表

    qs = 'name=user1&name=user2&age=25&height=180'
    print(urllib.parse.parse_qsl(qs))     
    
    [('name', 'user1'), ('name', 'user2'), ('age', '25'), ('height', '180')]
    
(3)恢复查询字符串
  • urlencode()

    # 字典
    query_dict = {'name': 'user', 'age': '25', 'height': '180'}
    # 将字典恢复成查询字符串
    print(urllib.parse.urlencode(query_dict))
    
    name=user&age=25&height=180
    
    # 已有列表
    lt = [('name', 'user1'), ('name', 'user2'), ('age', '25'), ('height', '180')]
    # 将列表恢复成查询字符串
    print(urllib.parse.urlencode(lt))
    
    name=user1&name=user2&age=25&height=180
    

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值