转载自 java爬虫之基于httpclient的简单Demo(二)

延续demo1的 java爬虫的2种爬取方式(HTTP||Socket)简单Demo(一),demo2出炉啦,大家想学爬虫都可以从这个网盘学习哦:https://pan.baidu.com/s/1pJJrcqJ#list/path=%2F

免费课程,非常不错。其实还是主要学习一个httpclient,httpclient全是英文文档,看的我心累啊

package com.simple.crawImpl;  import com.simple.Icrawl.ICrawl;
import com.simple.pojos.CrawlResultPojo;
import com.simple.pojos.UrlPojo;
import org.apache.http.HttpEntity;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;  import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;  /** * * Created by lewis on 2016/10/16. */
public class HttpClientCrawlerImpl implements ICrawl{  public CloseableHttpClient httpClient = HttpClients.custom().build();           //创建定制HttpClient  @Override  public CrawlResultPojo crawl(UrlPojo urlpojo) {  if(urlpojo==null){  return null;  }  CrawlResultPojo crawlResultPojo = new CrawlResultPojo();                //结果集  CloseableHttpResponse response = null;                                  //HTTP返回的各种信息集合,包含协议http标准,httpcode状态码  BufferedReader br = null;                                               //  try {  HttpGet httpGet = new HttpGet(urlpojo.getUrl());  response = httpClient.execute(httpGet);  HttpEntity entity = response.getEntity();                                       //获取输入流  InputStreamReader isr = new InputStreamReader(entity.getContent(),"utf-8");     //字节流转化为字符流,设置编码  br =new BufferedReader(isr);  String line =null;  StringBuilder context = new StringBuilder();  while((line=br.readLine())!=null){  context.append(line+"\n");  }  crawlResultPojo.setSuccess(true);  crawlResultPojo.setPageContent(context.toString());  return crawlResultPojo;  } catch (IOException e) {  e.printStackTrace();  crawlResultPojo.setSuccess(false);  }finally {  try {  if (br!=null)  br.close();                                                                 //关闭流  if(response!=null)  response.close();  } catch (IOException e) {  e.printStackTrace();  }  }  return crawlResultPojo;  }  /** * 带参数post的urlpojo * */  public CrawlResultPojo crawl4Post(UrlPojo urlPojo){  if(urlPojo==null||urlPojo.getUrl()==null){  return null;  }  CrawlResultPojo crawlResultPojo = new CrawlResultPojo();  BufferedReader br= null;  try {  RequestBuilder rb = RequestBuilder.post().setUri(new URI(urlPojo.getUrl()));  Map<String,Object> parasMap = urlPojo.getParasMap() ;  if(parasMap!=null){  for(Entry<String,Object> entry:parasMap.entrySet()){  rb.addParameter(entry.getKey(),entry.getValue().toString());  }  }  HttpUriRequest httpUriRequest = rb.build();  HttpEntity entity =httpClient.execute(httpUriRequest).getEntity();  InputStreamReader isr=new InputStreamReader(entity.getContent(),"utf-8");  br = new BufferedReader(isr);  String line = null;  StringBuilder stringBuilder = new StringBuilder();  while((line=br.readLine())!=null){  stringBuilder.append(line+"\n");  }  crawlResultPojo.setPageContent(stringBuilder.toString());  crawlResultPojo.setSuccess(true);  return crawlResultPojo;  } catch (URISyntaxException e) {  e.printStackTrace();  } catch (ClientProtocolException e) {  e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  } finally {  try {  if(br!=null)  br.close();  } catch (IOException e) {  e.printStackTrace();  }  }  crawlResultPojo.setSuccess(false);  return crawlResultPojo;  }  public static void main(String []args){  HttpClientCrawlerImpl httpClientCrawlerImpl = new HttpClientCrawlerImpl();  String url = "http://www.wangdaizhijia.com/front_select-plat";  UrlPojo urlPojo = new UrlPojo(url);  Map<String, Object> parasMap = new HashMap<String, Object>();  int max_page_number = 1000;  parasMap.put("currPage", 30);  parasMap.put("params", "");  parasMap.put("sort", 0);  urlPojo.setParasMap(parasMap);  CrawlResultPojo resultPojo = httpClientCrawlerImpl.crawl4Post(urlPojo);  print(resultPojo);  resultPojo=httpClientCrawlerImpl.crawl(urlPojo);  print(resultPojo);  }  public static void print(Object s){  System.out.println(s);  }  }

java爬虫之基于httpclient的简单Demo(二)相关推荐

  1. java爬虫教程 百度云_java视频教程java爬虫实战项目httpclient hbase springmvc solr

    资源内容: java视频教程java爬虫实战项目httpclient hbase springmvc solr|____猫了个咪-更多IT精品课程.html|____猫了个咪--it视频论坛.url| ...

  2. 使用轻量级JAVA 爬虫Gecco工具抓取新闻DEMO

    写在前面 最近看到Gecoo爬虫工具,感觉比较简单好用,所有写个DEMO测试一下,抓取网站 http://zj.zjol.com.cn/home.html,主要抓取新闻的标题和发布时间做为抓取测试对象 ...

  3. Java爬虫更新mysql数据库(简单事例)

    http://webmagic.io/docs/zh/posts/ch4-basic-page-processor/selectable.html webmagic官网文档解释 所需jar包: 以及w ...

  4. 基于iOS的简单计算器(二)

    接上一篇基于iOS的简单计算器(一)皆为po主iOS课程的实验内容. 新增界面 高级计算器:能够进行一些高级的运算比如三角函数.阶乘.对数等. 体质计算器:获取用户的身高体重后,反馈用户的体质指数. ...

  5. Java爬虫之利用Jsoup自制简单的搜索引擎

      Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据.Jso ...

  6. flex java blazeds_Flex与java通过BlazeDS实现通信(简单Demo)

    因为对于flex本人也是新手,此前按照网上的各种方法进行试验,都没能实现flex与java的通信.也许是eclipse和tomcat版本的问题.后来经过几天的尝试,终于成功了...现和大家分享一下,希 ...

  7. Java案例:基于TCP的简单聊天程序

    文章目录 一.如何实现TCP通信 二.编写C/S架构聊天程序 (一)编写服务器端程序 - Server.java (二)编写客户端程序 - Client.java (三)测试服务器端与客户端能否通信 ...

  8. Java爬虫(二)-- httpClient模拟Http请求+jsoup页面解析

    博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye 写博客 发Chat 传资源 登录注册 原 Java爬虫(二)-- httpClient ...

  9. 基于Java爬虫的课堂考勤管理系统(毕业设计论文)

    开发环境和选用的架构: 本系统中采用的开发环境是Windows10+JDK8+Tomcat8+MySQL5.6 使用IDEA作为开发工具,GIT用作版本控制,Maven管理依赖 采用SSM+Sprin ...

最新文章

  1. SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法
  2. LeetCode 542. 01 Matrix--C++解法--动态规划
  3. python在for循环中不能删除正在循环的列表(问题已解决)
  4. 为什么要娶就娶电力女?!
  5. plsql轻量版异常机制
  6. Andros系列排爆机器人原理_中国製造2025系列M之二:高档数控机床和机器人
  7. c52单片机控制l298n步进电机角度_【设计图文】单片机实现的步进电机控制系统(开题报告+论文+文献综述+外文翻译+DWG图纸)...
  8. 2017-11-14【Python】爬虫练习
  9. django的url匹配流程
  10. JAVA 实现《中国象棋》游戏
  11. 【POCKET 51】用 pocket 51学51单片机 之四:pocket 51功能模块测试
  12. 2021年进销存管理软件商户门店使用热度前十名排行榜
  13. 开发者将《午夜凶铃》与 ARKit 结合,把贞子带到你面前
  14. 【机器学习PAI实践十一】机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码
  15. Unity Shader graph 毒液
  16. 理论+实操 :华为NAT地址转换
  17. Mac电脑的自动切换输入法
  18. postgres支持AES加密配置
  19. SQL日期时间常用格式化方法
  20. 7月20日到12月3日

热门文章

  1. 一个例子带你搞懂python作用域中的global、nonlocal和local
  2. 使用Microsoft Word2016无法正常对Latex文本转换的踩坑和解决方法
  3. [JavaWeb-MySQL]多表查询(内连接,外连接,子查询)
  4. 计算机系统占有率,微软继续领跑PC操作系统市场 Win10占有率突破25%
  5. AtCoder Regular Contest 064
  6. Educational Codeforces Round 81 (Rated for Div. 2) F.Good Contest \ 洛谷 划艇 组合 计数dp
  7. CF1156F. Card Bag
  8. P2870 [USACO07DEC]Best Cow Line G
  9. acwing提高组 第一章 动态规划
  10. [AtCoder Regular Contest 124E] Pass to Next(dp+数学)