【使用JSOUP实现网络爬虫】处理URLs
2015-08-26 17:39
567 查看
问题
你有一个包含相对URLs路径的HTML文档,需要将这些相对路径转换成绝对路径的URLs。方法
在你解析文档时确保有指定base URI,然后
使用
abs:属性前缀来取得包含
base URI的绝对路径。代码如下:
[java] view plaincopyprint?Document doc = Jsoup.connect("http://www.open-open.com").get();
Element link = doc.select("a").first();
String relHref = link.attr("href"); // == "/"
String absHref = link.attr("abs:href"); // "http://www.open-open.com/"
说明
在HTML元素中,URLs经常写成相对于文档位置的相对路径:<a href="/download">...</a>. 当你使用
Node.attr(String key)方法来取得a元素的href属性时,它将直接返回在HTML源码中指定定的值。
假如你需要取得一个绝对路径,需要在属性名前加
abs:前缀。这样就可以返回包含根路径的URL地址
attr("abs:href")
因此,在解析HTML文档时,定义base URI非常重要。
如果你不想使用
abs:前缀,还有一个方法能够实现同样的功能
Node.absUrl(String key)。
阅读更多JSOUP相关文章,请看专栏:《使用JSOUP实现网络爬虫》
相关文章推荐
- jQuery Deferred(http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html)
- Linux网络总结
- Android 解决HTTP请求中文乱码
- 【使用JSOUP实现网络爬虫】从元素抽取属性,文本和HTML
- httpclient4的使用
- http操作,模拟第三方接口回调通知
- Azure虚拟网络基于RFC1918的子网划分
- 【使用JSOUP实现网络爬虫】使用选择器语法来查找元素
- 【使用JSOUP实现网络爬虫】使用DOM方法来遍历一个文档
- 1.6 网络编程之 UDP通信
- iOS开发——网络篇——数据安全(MD5),HTTPS,检测网络状态
- 【使用JSOUP实现网络爬虫】从一个URL加载一个Document
- HTTP 1.1与HTTP 1.0的比较
- iOS开发——网络篇——UIWebview基本使用,NSInvocation(封装类),NSMethodSignature(签名),JavaScript,抛异常,消除警告
- 安装PHP过程中,make步骤报错:(集合网络上各种解决方法)
- XCode7 iOS9无法访问网络的问题
- [iOS]code=-1016等网络请求错误.
- Linux网络虚拟化
- (二) HTTP/2起步
- 解决Exception in thread "http-bio-8081-exec-9"Exception in thread "Druid-ConnectionPool-Create-3819