JAVA使用爬虫抓取网站网页内容的方法

 更新时间:2015年07月24日 09:36:05   作者:fzhlee  
这篇文章主要介绍了JAVA使用爬虫抓取网站网页内容的方法,实例分析了java爬虫的两种实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了JAVA使用爬虫抓取网站网页内容的方法。分享给大家供大家参考。具体如下:

最近在用JAVA研究下爬网技术,呵呵,入了个门,把自己的心得和大家分享下
以下提供二种方法,一种是用apache提供的包.另一种是用JAVA自带的.

代码如下:

// 第一种方法
//这种方法是用apache提供的包,简单方便
//但是要用到以下包:commons-codec-1.4.jar
// commons-httpclient-3.1.jar
// commons-logging-1.0.4.jar
public static String createhttpClient(String url, String param) {
  HttpClient client = new HttpClient();
  String response = null;
  String keyword = null;
  PostMethod postMethod = new PostMethod(url);
//  try {
//   if (param != null)
//    keyword = new String(param.getBytes("gb2312"), "ISO-8859-1");
//  } catch (UnsupportedEncodingException e1) {
//   // TODO Auto-generated catch block
//   e1.printStackTrace();
//  }
  // NameValuePair[] data = { new NameValuePair("keyword", keyword) };
  // // 将表单的值放入postMethod中
  // postMethod.setRequestBody(data);
  // 以上部分是带参数抓取,我自己把它注销了.大家可以把注销消掉研究下
  try {
   int statusCode = client.executeMethod(postMethod);
   response = new String(postMethod.getResponseBodyAsString()
     .getBytes("ISO-8859-1"), "gb2312");
     //这里要注意下 gb2312要和你抓取网页的编码要一样
   String p = response.replaceAll("//&[a-zA-Z]{1,10};", "")
     .replaceAll("<[^>]*>", "");//去掉网页中带有html语言的标签
   System.out.println(p);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return response;
}
// 第二种方法
// 这种方法是JAVA自带的URL来抓取网站内容
public String getPageContent(String strUrl, String strPostRequest,
   int maxLength) {
  // 读取结果网页
  StringBuffer buffer = new StringBuffer();
  System.setProperty("sun.net.client.defaultConnectTimeout", "5000");
  System.setProperty("sun.net.client.defaultReadTimeout", "5000");
  try {
   URL newUrl = new URL(strUrl);
   HttpURLConnection hConnect = (HttpURLConnection) newUrl
     .openConnection();
   // POST方式的额外数据
   if (strPostRequest.length() > 0) {
    hConnect.setDoOutput(true);
    OutputStreamWriter out = new OutputStreamWriter(hConnect
      .getOutputStream());
    out.write(strPostRequest);
    out.flush();
    out.close();
   }
   // 读取内容
   BufferedReader rd = new BufferedReader(new InputStreamReader(
     hConnect.getInputStream()));
   int ch;
   for (int length = 0; (ch = rd.read()) > -1
     && (maxLength <= 0 || length < maxLength); length++)
    buffer.append((char) ch);
   String s = buffer.toString();
   s.replaceAll("//&[a-zA-Z]{1,10};", "").replaceAll("<[^>]*>", "");
   System.out.println(s);
   rd.close();
   hConnect.disconnect();
   return buffer.toString().trim();
  } catch (Exception e) {
   // return "错误:读取网页失败!";
   //
   return null;
  }
}

然后写个测试类:

public static void main(String[] args) {
  String url = "https://www.jb51.net";
  String keyword = "脚本之家";
  createhttpClient p = new createhttpClient();
  String response = p.createhttpClient(url, keyword);
  // 第一种方法
  // p.getPageContent(url, "post", 100500);//第二种方法
}

呵呵,看看控制台吧,是不是把网页的内容获取了

希望本文所述对大家的java程序设计有所帮助。

相关文章

  • 详解Spring cloud使用Ribbon进行Restful请求

    详解Spring cloud使用Ribbon进行Restful请求

    这篇文章主要介绍了详解Spring cloud使用Ribbon进行Restful请求,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 基于Springboot+Netty实现rpc的方法 附demo

    基于Springboot+Netty实现rpc的方法 附demo

    这篇文章主要介绍了基于Springboot+Netty实现rpc功能,在父项目中引入相关依赖结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Hadoop运行时遇到java.io.FileNotFoundException错误的解决方法

    Hadoop运行时遇到java.io.FileNotFoundException错误的解决方法

    今天给大家带来的是关于Java的相关知识,文章围绕着Hadoop运行时遇到java.io.FileNotFoundException错误展开,文中有非常详细的解决方法,需要的朋友可以参考下
    2021-06-06
  • springboot多租户设计过程图解

    springboot多租户设计过程图解

    这篇文章主要介绍了springboot多租户设计过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 如何实现广告弹窗触达频率的控制?

    如何实现广告弹窗触达频率的控制?

    这篇文章主要介绍了如何实现广告弹窗触达频率的控制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Spring事务中的事务传播行为使用方式详解

    Spring事务中的事务传播行为使用方式详解

    Spring框架作为一个轻量级的开源框架,在企业应用开发中被广泛使用,在Spring事务管理中,事务传播行为是非常重要的一部分,它定义了方法如何参与到已经存在的事务中或者如何开启新的事务,本文将详细介绍Spring事务中的几种事务传播行为,详细讲解具体使用方法
    2023-06-06
  • SWT(JFace)体验之复制粘贴

    SWT(JFace)体验之复制粘贴

    SWT(JFace)体验之复制粘贴
    2009-06-06
  • SpringBoot获取配置文件内容的几种方式总结

    SpringBoot获取配置文件内容的几种方式总结

    大家都知道SpringBoot获取配置文件的方法有很多,下面这篇文章主要给大家介绍了关于SpringBoot获取配置文件内容的几种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Java中String类的常用方法总结

    Java中String类的常用方法总结

    java.lang.String 类代表字符串。Java程序中所有的字符串文字(例如"abc" )都可以被看作是实现此类的实例。本文主要为大家介绍了String类的常用方法,需要的可以参考一下
    2022-11-11
  • SpringBoot的@GetMapping路径匹配规则、国际化详细教程

    SpringBoot的@GetMapping路径匹配规则、国际化详细教程

    这篇文章主要介绍了SpringBoot的@GetMapping路径匹配规则、国际化,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11

最新评论