• python urlparse模块


    最近学习了一些针对url的处理,主要使用到的是urlparse模块,借此机会详细的了解了一下相关知识。

    urlparse模块主要是把url拆分为6部分,并返回元组。并且可以把拆分后的部分再组成一个url。主要有函数有urljoin、urlsplit、urlunsplit、urlparse等。

    1.urlparse.urlparse(urlstring[, scheme[, allow_fragments]])

    将urlstring解析成6个部分,它从urlstring中取得URL,并返回元组 (scheme, netloc, path, parameters, query, fragment),但是实际上是基于namedtuple,是tuple的子类。它支持通过名字属性或者索引访问的部分URL,每个组件是一串字符,也有可能是空的。组件不能被解析为更小的部分,%后面的也不会被解析,分割符号并不是解析结果的一部分,除非用斜线转义。注意,返回的这个元组非常有用,例如可以用来确定网络协议(HTTP、FTP等等 )、服务器地址、文件路径,等等。

    web地址元素说明如下:
    prot_sch 网络协议或者下载规划
    net_loc 服务器位置(或许也有用户信息)
    path 斜杠(/)限定文件或者CGI应用程序的路径
    params 可选参数
    query 连接符(&)连接键值对
    frag 拆分文档中的特殊锚

    net_loc 可以进一步拆分成多个部件,有些是必备的,其他的是可选部件,net_loc字符串如user:passwd@host:port

    >>> import urlparse
    >>> urlparse.urlparse('http://ah.sina.com.cn/news/m/2017-11-24/detail-ifypceiq0521534.shtml')
    ParseResult(scheme='http', netloc='ah.sina.com.cn', path='/news/m/2017-11-24/detail-ifypceiq0521534.shtml', params='', query='', fragment='')

    >>> print url.netloc
    ah.sina.com.cn

    2.urlparse.urlunparse(parts)

    从一个元组构建一个url,元组类似urlparse返回的,它接收元组(scheme, netloc, path, parameters, query, fragment)后,会重新组成一个具有正确格式的URL,以便供Python的其他HTML解析模块使用。


    >>> url_parse = urlparse.urlparse('http://ah.sina.com.cn/news/m/2017-11-24/detail-ifypceiq0521534.shtml')
    >>> url = urlparse.urlunparse(url_parse)
    >>> print url
    http://ah.sina.com.cn/news/m/2017-11-24/detail-ifypceiq0521534.shtml

    3.urlparse.urlsplit(urlstring[, scheme[, allow_fragments]])

    主要是分析urlstring,返回一个包含5个字符串项目的元组:协议、位置、路径、查询、片段。allow_fragments为False时,该元组的组后一个项目总是空,不管urlstring有没有片段,省略项目的也是空。urlsplit()和urlparse()差不多。不过它不切分URL的参数。适用于遵循RFC2396的URL,每个路径段都支持参数。这样返回的元组就只有5个元素。


    >>> url = 'http://ah.sina.com.cn/news/m/2017-11-24/detail-ifypceiq0521534.shtml'
    >>> url_split = urlparse.urlsplit(url)
    >>> print url_split
    SplitResult(scheme='http', netloc='ah.sina.com.cn', path='/news/m/2017-11-24/detail-ifypceiq0521534.shtml', query='', fragment='')


    4.urlparse.urlunsplit(parts)

    urlunsplit使用urlsplit()返回的值组合成一个url

    >>> url = 'http://ah.sina.com.cn/news/m/2017-11-24/detail-ifypceiq0521534.shtml'
    >>> url_split = urlparse.urlsplit(url)
    >>> url_new = urlparse.urlunsplit(url_split)
    >>> print url_new
    http://ah.sina.com.cn/news/m/2017-11-24/detail-ifypceiq0521534.shtml

    5.urlparse.urljoin(base, url[, allow_fragments])

    urljoin主要是拼接URL,它以base作为其基地址,然后与url中的相对地址相结合组成一个绝对URL地址。函数urljoin在通过为URL基地址附加新的文件名的方式来处理同一位置处的若干文件的时候格外有用。需要注意的是,如果基地址并非以字符/结尾的话,那么URL基地址最右边部分就会被这个相对路径所替换。如果希望在该路径中保留末端目录,应确保URL基地址以字符/结尾。这个之前在爬虫中经常会用到,解决原网页中url不完整问题。

    >>> url_join = urlparse.urljoin('http://ah.sina.com.cn','/news/m/2017-11-24/detail-ifypceiq0521534.shtml')
    >>> print url_join
    http://ah.sina.com.cn/news/m/2017-11-24/detail-ifypceiq0521534.shtml

  • 相关阅读:
    二维数组的最大联通子数组
    四则运算网页终结版
    Python+Selenium进阶版(四)-封装一个自己的类-浏览器引擎类
    Python+Selenium进阶版(三)- 二次封装Selenium中几个方法
    Python+Selenium进阶版(二)- Python中类/函数/模块的简单介绍
    Python+Selenium进阶版 (一)- Python IDE工具-PyCharm的安装和使用
    Python+Selenium学习-Xpat增强梳理版
    Python+Selenium练习(三十一)- 截图并保存
    Python+Selenium练习(三十)- 获取页面元素的href属性
    Python+Selenium练习(二十九)- 获取当前页面全部图片信息
  • 原文地址:https://www.cnblogs.com/niansi/p/7900444.html
Copyright © 2020-2023  润新知