需求说明:使用Java抓取网页信息,并以字符串的形式返回。

使用Java代码实现:

  1. package net.ibuluo.spider.util;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.InputStreamReader;
  6. import java.io.Reader;
  7. import java.net.MalformedURLException;
  8. import java.net.URL;
  9.  
  10. /**
  11. * Http工具
  12. * @author robin zhang
  13. *
  14. */
  15. public class HttpUtil {
  16.  
  17. /**
  18. * 根据网址抓取网页信息并将之以字符串的形式返回
  19. * @param urlStr
  20. * 网址字符串
  21. * @return
  22. * @throws MalformedURLException
  23. */
  24. public static String getUrl(String urlStr) {
  25.  
  26. String result = null;
  27.  
  28. try{
  29. URL url = new URL(urlStr);
  30. result = inputStream2String(url.openStream());
  31. } catch (MalformedURLException e) {
  32. e.printStackTrace();
  33. } catch (IOException e) {
  34. e.printStackTrace();
  35. }
  36.  
  37. return result;
  38. }
  39.  
  40. /**
  41. * 读取字节流中的信息,并转为字符串
  42. * @param inputStream
  43. * 要读取的字节流
  44. * @return
  45. * @throws IOException
  46. */
  47. private static String inputStream2String(InputStream inputStream)
  48. throws IOException{
  49. Reader reader = null;
  50. StringBuilder builder = null;
  51. try{
  52. //将字节流转为字符流
  53. reader = new InputStreamReader(inputStream);
  54. //创建字符串容器
  55. builder = new StringBuilder();
  56. //设置字符流读取长度
  57. char[] buffer = new char[1024];
  58. //记录每次读取的长度,主要是为记录最后一次读取的长度
  59. int offset = 0;
  60. while((offset=reader.read(buffer)) > 0){
  61. //将读取的内容转为字符串并放入builder中
  62. builder.append( new String(buffer, 0, offset) );
  63. }
  64. return builder.toString();
  65. } catch (IOException e) {
  66. e.printStackTrace();
  67. }finally{
  68. if(null != reader){
  69. reader.close();
  70. }
  71. }
  72. return null;
  73. }
  74.  
  75. public static void main(String[] args){
  76. System.out.println( getUrl("http://www.ibuluo.net/") );
  77. }
  78. }

以上的内容可以使用一个第三方插件JSoup实现。使用jsoup实现代码如下:

  1. try {
  2. Document doc = Jsoup.connect("http://www.baidu.com/").get();
  3. System.out.println(doc.html());
  4. } catch (IOException e) {
  5. e.printStackTrace();
  6. }

Jsoup更多的用处是在实现html文档的分析上。可以参考Jsoup官方网站

Java实现简单网页抓取的更多相关文章

  1. 【apache】使用HttpClient,进行简单网页抓取

    1 package com.lw.httpclient.test; 2 import org.apache.http.client.methods.CloseableHttpResponse; 3 i ...

  2. java网页抓取

    网页抓取就是,我们想要从别人的网站上得到我们想要的,也算是窃取了,有的网站就对这个网页抓取就做了限制,比如百度 直接进入正题 //要抓取的网页地址 String urlStr = "http ...

  3. Java实现网页抓取的一个Demo

    这个小案例的话我是存放在我的github 上. 下面给出链接自己可以去看下,也可以直接下载源码.有具体的说明 <Java网页抓取>

  4. Python实现简单的网页抓取

    现在开源的网页抓取程序有很多,各种语言应有尽有. 这里分享一下Python从零开始的网页抓取过程 第一步:安装Python 点击下载适合的版本https://www.python.org/ 我这里选择 ...

  5. Java开源网页抓取工具httpClient以及jsoup

    网上看到不错的Java网页抓取工具和库 先记录一下 使用java开源工具httpClient及jsoup抓取解析网页数据

  6. 网页抓取:PHP实现网页爬虫方式小结

    来源:http://www.ido321.com/1158.html 抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐.LZ总结了几种常用的.易于实现 ...

  7. 基于Casperjs的网页抓取技术【抓取豆瓣信息网络爬虫实战示例】

    CasperJS is a navigation scripting & testing utility for the PhantomJS (WebKit) and SlimerJS (Ge ...

  8. Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

  9. Python爬虫之三种网页抓取方法性能比较

    下面我们将介绍三种抓取网页数据的方法,首先是正则表达式,然后是流行的 BeautifulSoup 模块,最后是强大的 lxml 模块. 1. 正则表达式   如果你对正则表达式还不熟悉,或是需要一些提 ...

随机推荐

  1. Linux ssh其他服务器

  2. Java日期类:Date和Calendar的使用

    总是使用这两个类,总是需要百度.还不如一次全部整理完. 一.介绍: Date 类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年 ...

  3. ASP.Net请求处理机制初步探索之旅 - Part 3 管道(转)

    开篇:上一篇我们了解了一个ASP.Net页面请求的核心处理入口,它经历了三个重要的入口,分别是:ISAPIRuntime.ProcessRequest().HttpRuntime.ProcessReq ...

  4. 学习使用turtlebot2——调试Hokuyo激光雷达(型号UST-10LX)

    目标 在ROS上调试使用Hokuyo激光雷达传感器 配置情况     电脑使用Ubuntu 14.04版本,ROS为 Indigo,激光雷达为Hokuyo(型号UST-10LX,网口型接口)   如果 ...

  5. 巨蟒python全栈开发-第4天 列表&元组&range

    今日内容大纲 1. 什么是列表 定义: 能装对象的对象 在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求 列表存在索引和切片. 和字符串是一样的. 2. 相关的增删改查操 ...

  6. poj 1182 食物链 (带关系的并查集)

      食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 44835 Accepted: 13069 Description 动 ...

  7. <2014 04 29> c/c++常用库总结

    C 标准库 ============================================================================================== ...

  8. python split(),os.path.split()和os.path.splitext()函数用法

    https://blog.csdn.net/T1243_3/article/details/80170006   # -*- coding:utf-8 -*- """ @ ...

  9. Python(数据库安装与基本语句)

    一.数据库相关概念 1.两种硬件扩展方式 a.垂直扩展:针对一台计算机 b.水平扩展:多台普通计算机 2.数据库相关概念 数据库服务器(本质就是一个台计算机,该计算机之上安装有数据库管理软件的服务端) ...

  10. 解决Object() takes on paramenters的问题

    先贴上今天的代码: 解决:是由于父类中的_init_()写成了_int_(),由于粗心导致,下次注意.