• url拼接


    在做网页抓取的时候经常会遇到一个问题就是页面中的链接是相对链接,这个时候就需要对链接进行url拼接,才能得到绝对链接。

    url严格按照一定的格式构成,一般为如下5个字段:

    详细可参考RFC:http://tools.ietf.org/html/rfc3986

    url拼接一般包含如下几种情况:

    1.相对链接不包含路径,则直接在父链接所在的路径级别后面加上该相对链接即可得到拼接的url:

    例如:http://www.baidu.com, 相对链接:index.html,得到:http://www.baidu.com/index.html

            http://www.baidu.com/index.html, 相对链接:hello.html,得到:http://www.baidu.com/hello.html

    2.相对链接包含路径,则在父链接所在的路径级别后拼接相对路径得到拼接后的url:

    例如: http://www.baidu.com/movie/123.html,相对链接:/contact/index.html,得到:http://www.baidu.com/movie/contact/index.html

    3.更为复杂的情况是相对路径带有../,此时将按照../得到相应的路径再拼接url:

    例如:http://www.baidu.com/movie/123.html,相对链接:../contact/index.html,得到:http://www.baidu.com/contact/index.html

    如果html头部 有 <base>标记,例如:<base href="http://www.father.com/" />则该页面上的基准URL都以此为准,不考虑其父链的情况。

    python中的常用的url拼接库为urlparse.urljoin(base, url, flag)

    此外,对于网页中的图片链接的拼接,可采用如下方式:

    1.如果图片链接为完整连接,则不需要拼接;

    2.如果网页中的图片连接以'/'开头,则通过domain拼接:

        img = urlparse.urljoin(base_url, img) 

    3.如果网页中的图片连接不以'/'开头,则通过当前页面url拼接:

        img = urlparse.urljoin(cur_url, img)

    同样的方式适用于网页中的anchor链接的拼接。

  • 相关阅读:
    设计模式详解(图码)
    设计模式详解(图)
    Zookeeper学习
    取消单元格的点击事件
    ios 中生成随机数
    IOS 时间和时间戳之间转化
    偏好存空判断
    限制textfield的文字长度
    tabBar的图标不被系统渲染
    (转)IOS http请求的get 和 post的请求的区别
  • 原文地址:https://www.cnblogs.com/chybot/p/4862191.html
Copyright © 2020-2023  润新知