需求说明:使用Java抓取网页信息,并以字符串的形式返回。
使用Java代码实现:
package net.ibuluo.spider.util; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.net.MalformedURLException; import java.net.URL; /** * Http工具 * @author robin zhang * */ public class HttpUtil { /** * 根据网址抓取网页信息并将之以字符串的形式返回 * @param urlStr * 网址字符串 * @return * @throws MalformedURLException */ public static String getUrl(String urlStr) { String result = null; try{ URL url = new URL(urlStr); result = inputStream2String(url.openStream()); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } /** * 读取字节流中的信息,并转为字符串 * @param inputStream * 要读取的字节流 * @return * @throws IOException */ private static String inputStream2String(InputStream inputStream) throws IOException{ Reader reader = null; StringBuilder builder = null; try{ //将字节流转为字符流 reader = new InputStreamReader(inputStream); //创建字符串容器 builder = new StringBuilder(); //设置字符流读取长度 char[] buffer = new char[1024]; //记录每次读取的长度,主要是为记录最后一次读取的长度 int offset = 0; while((offset=reader.read(buffer)) > 0){ //将读取的内容转为字符串并放入builder中 builder.append( new String(buffer, 0, offset) ); } return builder.toString(); } catch (IOException e) { e.printStackTrace(); }finally{ if(null != reader){ reader.close(); } } return null; } public static void main(String[] args){ System.out.println( getUrl("http://www.ibuluo.net/") ); } }
以上的内容可以使用一个第三方插件JSoup实现。使用jsoup实现代码如下:
try { Document doc = Jsoup.connect("http://www.baidu.com/").get(); System.out.println(doc.html()); } catch (IOException e) { e.printStackTrace(); }
Jsoup更多的用处是在实现html文档的分析上。可以参考Jsoup官方网站。
时间: 2024-10-29 19:08:14