qq_32114925 2016-08-15 08:56 采纳率: 12.5%
浏览 3027

如何用Java爬虫获取网页中的文本内容?

如何用Java爬虫获取一个网页中的文本内容(不是源代码,是内容)? 求代码!!!!

  • 写回答

2条回答 默认 最新

  • YUEANDYY 2016-08-17 15:19
    关注

    利用httpclient开源工具抓取网页的源码,并且控制台打印出来工具类的编写

    package com.pyc.search.crawler.node.tools;

    import java.io.InputStream;

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.params.BasicHttpParams;
    import org.junit.Test;

    /**

    • @update yangluan
    • 通过 地址 和cookie信息 直接把需要的网页源代码拿下来
      */
      public class HttpClientContent {

      public static String getHeadersByHttpClient(String link,String cookie) throws Exception {

      CloseableHttpClient httpClient = HttpClients.createDefault();
      
      // 请求链接
      HttpGet request = new HttpGet(link);
      
      /**
       * 请求参数设置
       */
      

      // String location = null;
      // int code = 0;
      // BasicHttpParams params = new BasicHttpParams();
      // // 参数,是否重定向,不重定向能够拿到location
      // params.setParameter("http.protocol.handle-redirects", false);
      // // params.setParameter("User-Agent",
      // // "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36");
      // request.setParams(params);
      request.setHeader(
      "User-Agent",
      "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36");
      request.setHeader("Cookie", cookie);
      HttpResponse response = httpClient.execute(request);

      /**
       * 当链接不进行重定向动作时,状态码为302可以获取location链接 当进行重定向动作时,状态码为200没有location
       */
      

      // code = response.getStatusLine().getStatusCode();
      // if (code == 302) {
      // Header head = response.getFirstHeader("Location");
      // if (head != null) {
      // location = head.getValue();
      // }
      // }
      // System.out.println(code + ":" + location);

      /**
       * 获取内容块 code为200的状态
       */
      HttpEntity entity = response.getEntity();
      InputStream is = entity.getContent();
      int size = 0;
      byte[] buffer = new byte[1024];
      StringBuffer sb = new StringBuffer();
      while ((size = is.read(buffer)) > -1) {
          sb.append(new String(buffer, 0, size, "utf-8"));
      }
      
      is.close();
      
      return sb.toString();
      

      }

      public static void main(String[] args) throws Exception {
      String html = getHeadersByHttpClient("抓取网站地址","Cookie信息");
      System.out.println(html);
      }

    评论

报告相同问题?

悬赏问题

  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊