• python3 爬虫4--解析链接


    1.urlparse()

    属于urllib.parse

    在urlparse世界里面,一个标准的URL链接格式如下

    scheme://nrtlooc/path;paramters?query#fragment

    所以,一个url='http://www.baidu.com/index.html;user?id=5#comment'

    我们使用urlparse的话,就可以被分成6个部分

    (scheme='http',netloc='www.baidu.com',path='index.html'paramters='user'.query='id=5',fragment='comment')

    具体操作如下:

    res=urlparse('https://www.baidu.com/baidu?wd=query&tn=monline_dg&ie=utf-8')

    print(res)

    urlparse还有带参数的是使用方法

    res=urlparse(urlstring,scheme=' ',allow_fragment=True)

    scheme是默认的协议,如果urlstring没有带协议,则使用scheme中的协议,若是有,则仍然使用urlstring中协议

    allow_fragment即是否忽略fragment,如果是False,fragment就被解析为path、paramenters或者query中的一部分

    2,urlunparse()

    属于urllib.parse

    正如其名字所示,ulrunparse()是urlparse()的逆过程

    例如:data=['http','www.baidu.com','index.html','user','a=6','comment']

    print(urlunparse(data))

    这样就完成了urlstring的构造

    3urlsplit()

    from urllib.parse import urlsplit

    与urlparse类似,但urlsplict把urlstirng分割成5个部分,其中少了paramters

    res=urlsplict('http://www.baidu.com/index.html;user?id=5#comment')

    print(res)

    4urlunsplit()

    用法与urlunparse()类似

    5urljoin()

    属于urllib.parse

    urljoin()也是一种生成urlstring的方式,这种生成方法是提供两个链接,分别是base_url,和新链接,分析base_url中的scheme,netloc,path这三个部分,然后对新链接缺失的部分进行补充,新链接里面若是有,则不补充,不提换,最后返回新链接,举个例子

    print(urljoin('http://www.baidu.com',‘wd=query&tn=monline_dg&ie=utf-8‘))

    返回结果是:

    http://www.baidu.com/wd=query&tn=monline_dg&ie=utf-8
    6urlencode()

    from urllib,parse import urlencode

    可以将字典类型转换为url参数举例来说

    param={'name':'lihua','age':'23'}

    base_url='http://www.baidu.com'

    url=base_url+urlencode(param)

    print(url)

    7parse_qs()

    parse_qs()是parse_encode()的逆过程(为什么名字的区别这么大,我也是不得其解)

    from urllib.parse import parse_qs

    query='wd=query&tn=monline_dg&ie=utf-8'

    print(parse_qs(query))

    输出结果是:{'tn': ['monline_dg'], 'wd': ['query'], 'ie': ['utf-8']}
    这样就转换称为字典类型了

    8pars_qsl()

    from urllib.pase  import parse_qsl:将参数转换成为元组组成的列表

    query='wd=query&tn=monline_dg&ie=utf-8'

    print(parse_qsl(query))

    输出结果:[('wd', 'query'), ('tn', 'monline_dg'), ('ie', 'utf-8')]

    9quote

    quote()方法可以将内容转换为URL编码格式,有时候URL带中文可能导致乱码,这样就需要quote

    from urllib。parse import quote

    keyword='美女'

    url='https://www.baidu.com/s?wd='+quote(keyword)

    print(url)

    输出结果:https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3

    10unquote()

    对URL进行解码

    from urllib.parse import unquote

    url='https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3'

    print(unquote(url))

    输出结果:https://www.baidu.com/s?wd=美女
    就可以实现解码

  • 相关阅读:
    Java多线程学习
    深入理解Java之线程池
    非GUI模式下运行JMeter和远程启动JMeter
    从头写一个Cucumber测试(二) Cucumber Test
    从头写一个Cucumber测试(一) Selenium Test
    接口测试 rest-assured 使用指南
    cucumber 使用资料
    fastjson中Map与JSONObject互换,List与JOSNArray互换的实现
    json解析神器 jsonpath的使用
    【Oracle】查找每期数据都存在的产品
  • 原文地址:https://www.cnblogs.com/daibigmonster/p/7520021.html
Copyright © 2020-2023  润新知