• urllib.parse解析链接


    1. urlparse() 解析链接,注意,返回值比3多一个params的属性

    from urllib.parse import urlparse
     
    result = urlparse('http://www.baidu.com/index.html;user?id=5#comment')
    print(type(result), result)
    <class 'urllib.parse.ParseResult'>
    ParseResult(scheme='http', netloc='www.baidu.com', path='/index.html', params='user', query='id=5', fragment='comment')
    结果

    2. urlunparse() 生成链接,数组必须要有6个元素

    from urllib.parse import urlunparse
     
    data = ['http', 'www.baidu.com', 'index.html', 'user', 'a=6', 'comment']
    print(urlunparse(data))
    http://www.baidu.com/index.html;user?a=6#comment
    结果

    3. urlsplit()  解析链接,一般用这个,因为网上的链接大多都没有params

    from urllib.parse import urlsplit
     
    result = urlsplit('http://www.baidu.com/index.html;user?id=5#comment')
    print(result)
    SplitResult(scheme='http', netloc='www.baidu.com', path='/index.html;user', query='id=5', fragment='comment')
    结果

    4. urlunsplit() 生成链接,数组中有且仅有5个值

    from urllib.parse import urlunsplit
     
    data = ['http', 'www.baidu.com', 'index.html', 'a=6', 'comment']
    print(urlunsplit(data))
    http://www.baidu.com/index.html?a=6#comment
    结果

    5. urljoin() 合并链接,

    from urllib.parse import urljoin
     
    print(urljoin('http://www.baidu.com', 'FAQ.html'))
    print(urljoin('http://www.baidu.com', 'https://cuiqingcai.com/FAQ.html'))
    print(urljoin('http://www.baidu.com/about.html', 'https://cuiqingcai.com/FAQ.html'))
    print(urljoin('http://www.baidu.com/about.html', 'https://cuiqingcai.com/FAQ.html?question=2'))
    print(urljoin('http://www.baidu.com?wd=abc', 'https://cuiqingcai.com/index.php'))
    print(urljoin('http://www.baidu.com', '?category=2#comment'))
    print(urljoin('www.baidu.com', '?category=2#comment'))
    print(urljoin('www.baidu.com#comment', '?category=2'))
    http://www.baidu.com/FAQ.html
    https://cuiqingcai.com/FAQ.html
    https://cuiqingcai.com/FAQ.html
    https://cuiqingcai.com/FAQ.html?question=2
    https://cuiqingcai.com/index.php
    http://www.baidu.com?category=2#comment
    www.baidu.com?category=2#comment
    www.baidu.com?category=2
    结果

    6. urlencode() 参数序列化

    from urllib.parse import urlencode
     
    params = {
        'name': 'germey',
        'age': 22
    }
    base_url = 'http://www.baidu.com?'
    url = base_url + urlencode(params)
    print(url)
    http://www.baidu.com?name=germey&age=22
    结果

    7. parse_qs() 反序列化

    from urllib.parse import parse_qs
     
    query = 'name=germey&age=22'
    print(parse_qs(query))

    这个结合1或者3非常实用的,怎么实用自行脑补。

    {'name': ['germey'], 'age': ['22']}
    结果

    8. parse_qsl() 将参数转化为元组组成的列

    from urllib.parse import parse_qsl
     
    query = 'name=germey&age=22'
    print(parse_qsl(query))
    [('name', 'germey'), ('age', '22')]
    结果

    9. quote() 将内容转化为URL编码的格式,URL中带有中文参数时,请使用。

    from urllib.parse import quote
     
    keyword = '壁纸'
    url = 'https://www.baidu.com/s?wd=' + quote(keyword)
    print(url)
    https://www.baidu.com/s?wd=%E5%A3%81%E7%BA%B8
    结果

    值得注意的是:只能用在参数部分,否则整个url都编码了,他的亲爹都不认识了。

    10. unquote() 与9正好相反

    from urllib.parse import unquote
     
    url = 'https://www.baidu.com/s?wd=%E5%A3%81%E7%BA%B8'
    print(unquote(url))
    https://www.baidu.com/s?wd=壁纸
    结果

     参考自:https://cuiqingcai.com/5508.html

  • 相关阅读:
    Android开发 设置控件边角半圆
    Android开发 使用XML文件设置背景变化
    Android开发 ImageButton加载drawable文件问题
    Android开发 网络检测(使用广播监听)
    android studio无法在可视化页面预览布局文件
    jdbc连接oracle数据库
    「数学」- 暑假后文化课能力复健 20210906 ~ 20210912
    「数学」- 暑假后文化课能力复健 20210830 ~ 20210905
    「数学」高等代数学习笔记
    「数学」浅谈极值点偏移问题的处理技巧
  • 原文地址:https://www.cnblogs.com/hardykay/p/10937825.html
Copyright © 2020-2023  润新知