zoukankan      html  css  js  c++  java
  • 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链接的拼接。

  • 相关阅读:
    IIS配置桌面上的文件报错,可能是含有中文字符
    GridView序号
    图片处理函数(自适应缩略图datatable中添加缩略图像)
    linqtoobject
    数据库存取图片二进制数据
    反射
    jquery
    加干扰字符
    Doc的窗口就创建一个,如果已经存在就激活那个窗口,不存在就建立Doc(转自CSDN)
    VC++中使用内存映射文件处理大文件(转)
  • 原文地址:https://www.cnblogs.com/chybot/p/4862191.html
Copyright © 2011-2022 走看看