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链接的拼接。
url拼接的更多相关文章
- php 对url 操作类:url拼接、get获取页面、post获取页面(带传参)
/* * @brief url封装类,将常用的url请求操作封装在一起 * */ class URL{ private $error; public function __construct(){ $ ...
- Python相对完美的URL拼接函数
首先说下什么叫URL拼接,我们有这么一个HTML片段: <a href="../../a.html">click me</a> 做为一只辛苦的爬虫,我们 ...
- url拼接参数格式
在一些情况下,需要直接往url上拼接请求参数. http://www.yanggb.com?flag=1&type=normal&role=customer 通过上面的例子就可以看出, ...
- Ajax获取接口数据,url拼接参数跳转页面,js获取上一级页面参数给本页面
1.Ajax获取接口数据 function demo(){ //假设请求参数 var requestBody = [{ "name":"zhang", &quo ...
- 接口测试get请求url拼接函数(python)
get请求地址一般是 协议+域名+端口+路径+参数,除了协议和域名其他均可为空. http(s)://domain:port/path?key1=value1&key2=value2& ...
- 相对URL拼接为绝对URL的过程
URL有两种方式:绝对的和相对的. 绝对URL中包含有访问资源的所需的全部信息 举一个例子: <HTML> <HEAD><TITLE>Joe's Tools< ...
- 关于url拼接传参数和利用view的字典传参数时,模板获取数据的方式问题
url = "{% url 'dashboard:internship-theme-stat' %}?teacher_name="+teacher_name+"& ...
- 记录下url拼接的多条件筛选js
本着为提高工作效率百度或者google这些代码发现拿过来的都不好用,然后自己写了个,写的一般但记录下以后再优化 <html> <head> <script> $(f ...
- %3f URL --> '?'拼接引发的问题
转载自:https://www.reddit.com/r/swift/comments/2w19kp/how_do_you_send_a_through_nsmutableurlrequest/ ho ...
随机推荐
- 数据分析之可反复与独立样本的T-Test分析
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jia20003/article/details/24201297 数据分析之独立样本的T-Test分 ...
- DIV+CSS如何让文字垂直居中?
在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...
- 【开发者笔记】按List中存放对象的某一字段计数的问题
如题,假设有如下表t_info: name date info a 20127-12-20 xxxx描述 b 20127-12-20 yyyyy描述 c 20127-12-21 zzz描述 d 201 ...
- webuploader 多图片上传
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件. 具体接口参考 webuploader接口文档地址 一.图片上传功能 ...
- C的指针疑惑:C和指针13(高级指针话题)
传递命令行参数 C程序的main函数具有两个形参.第一个通常称为argc,代表命令行参数的数目. 第二个通常称为argv,它指向一组参数值.由于参数的数目并没有内在的限制,所以argv指向这组参数值( ...
- Linux下多个.c文件的编译和Makefile文件
在编程的时候,我们可以把一个完整程序的每个函数分离出来,写成.c文件,最后再一起编译和链接.这样有利于程序功能模块化,也方便检查代码错误. .h文件:里面编辑该程序需要引用的头文件. #ifndef ...
- Oracle DB 使用RMAN将数据库移植到ASM存储区
1. 完全关闭数据库. 2. 关闭数据库并修改服务器参数文件,以使用Oracle Managed Files (OMF). 3. 编辑并执行以下RMAN 脚本: STARTUP NOMOUNT; RE ...
- jQuery实现复选框 全选、反选、全不选
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- kettle配置命名参数
bat 调度文件如下 cd D:/Program Files/kettle700/data-integrationKitchen.bat /rep repository /dir /TEST /job ...
- iOS App 上架(Analysis 工具使用)
随着iOS开发的流行,针对iOS开发涉及的方方面面,早有一些公司提供了专门的解决方案或工具.这些解决方案或工具包括:用户行为统计工具(友盟,Flurry,Google Analytics等), App ...