public class CrawlerUtil {
public static void main(String [] args) throws IOException {
// 创建默认的httpClient实例.    
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建httpget    
HttpGet httpGet = new HttpGet("http://localhost:8080/");
CloseableHttpResponse response = httpclient.execute(httpGet); HttpEntity entity = response.getEntity(); if(entity !=null){
System.out.println("______________________________________");
System.out.println("Response content: "+ EntityUtils.toString(entity,"UTF-8"));
System.out.println("______________________________________");
}
}
}

  

最近项目中有部分数据需要从另一个网址爬取,这才初次入手爬虫。

开发语言是java,通过跟前辈取经及百度,终于搞定了这个需求。

以上为简单的demo。

maven配置:

<!--<dependency>-->
<!--<groupId>commons-httpclient</groupId>-->
<!--<artifactId>commons-httpclient</artifactId>-->
<!--<version>3.1</version>-->
<!--</dependency>-->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3</version>
</dependency>

使用的工具包是httpclient(爬取数据)和jsoup(解析html);

需要注意的事httpclient有两个版本:

1.org.apache.commons.httpclient.HttpClient;

2.org.apache.http.client.HttpClient;

但前者目前已经不再更新了,所以我使用的时候后者;

简单理解起来如下:

1.一个客户端,用来发起http请求(HttpClient.createDefault());

2.请求对象(get,post等,比如上面demo里的HttpGet);

3.返回值:CloseableHttpResponse;

客户端对象操作(execute)请求对象,得到返回值:

CloseableHttpResponse response  =  httpclient.execute(httpGet);

上面的demo是get请求,至于post请求,就将请求参数放进一个对象里(HttpEntity里),然后将这个对象放进请求对象里(HttpPost);

如下:

List formparams = new ArrayList();
formparams.add(new BasicNameValuePair("username","admin"));
formparams.add(new BasicNameValuePair("password","123456"));
UrlEncodedFormEntity uefEntity;
uefEntity = new UrlEncodedFormEntity(formparams,"UTF-8");
CloseableHttpResponse response = httpclient.execute(httpGet);
post.setEntity(uefEntity); 以上.------------------------------------------------------------------------------------------------------------------- 以上皆为api层的东西,当然针对不同的需求场景,还有各种参数的设置需要注意,我也只是初入此类知识. 以上为爬虫原理,至于更底层的协议等东西我暂时没有去深入,以后会慢慢系统深入.

初入爬虫(java)的更多相关文章

  1. 初入Java后端之Servlet

    初入Java后端之Servlet 后端 Servlet  什么是Servlet? Servlet实际上是一个按照Servlet规范写的Java类.是运行在Web服务端的Java应用程序.与Java程序 ...

  2. Scala初入

    何为Scala物 Scala为基于JVM虚拟机中的面向对象与函数式编程思想并且完全兼容Java的混合编程语言,可以是Scala与Java是同根同源的,既然Scala与JAVA都是基于JVM之上的编程语 ...

  3. 初入SG-UAP

    初入SG-UAP SpriderMan 关注 2019.06.19 14:10 字数 1130 阅读 10评论 0喜欢 0 初次接触SG-UAP,将自己的见解以文字形式记录下来,希望能对初入的伙伴们有 ...

  4. 初学HTML5、初入前端

    学习HTML5是一个漫长的过程,当中会遇到很多技术与心态上的变化.刚开始学习,我们不能发力过猛,需要一个相对稳定的状态去面对.多关注一些自己感兴趣的网站和技术知识,建立自己的信心与好奇心,为以后的学习 ...

  5. 0x00linux32位汇编初入--前期准备

    0x00汇编初入--前期准备 一.汇编工具 在linux平台下常用的编译器为as,连接器为ld,使用的文本编辑器为vim,汇编语法为att 以下是一些工具: addr2line 把地址转换为文件名和行 ...

  6. 初入职场的建议--摘自GameRes

    又开始一年一度的校招了,最近跑了几个学校演讲,发现很多话用短短的一堂职业规划课讲还远远不够,因为那堂课仅仅可能帮大家多思考怎样找到一份合适的工作,并没有提醒大家怎样在工作中发展自己的职业. 见过这么多 ...

  7. 老李分享:网页爬虫java实现

    老李分享:网页爬虫java实现   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821 ...

  8. 【Xbox one S】开箱&开机&初入坑心得

    再来一发水贴,先上产品标准照镇贴: 前言 身为一个资深单机游戏玩家,常年混迹在PC平台,但内心深处一直对主机有种迷之向往,感觉那才是单机游戏的正处之地,坐沙发上拿着手柄对着电视跌宕起伏才是正确的游戏姿 ...

  9. Git初入

    Git记录 使用git 也有一段时间了, git的入门级了解也就不再多说, 但平常使用中, 仍然会遇到很多问题, 在此记录一二. 在查资料的过程中, 发现了两个比较好的资料: 特别是第二个, 相当详细 ...

随机推荐

  1. Redis基础、高级特性与性能调优

    本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍.之后概览Redis提供的高级能力,并在部署.维护.性能调优等多个方面进行更深入的介绍和指导. ...

  2. A1117. Eddington Number

    British astronomer Eddington liked to ride a bike. It is said that in order to show off his skill, h ...

  3. [bzoj3524][Couriers]

    题目链接 思路 观察这个\((r - l + 1)/2\),很容易证明,如果一个数出现次数大于\((r - l + 1) / 2\),那么这个区间内第\((r - l + 1) / 2 + 1\)大一 ...

  4. python列表的常用方法

  5. 实现迁徙学习-《Tensorflow 实战Google深度学习框架》代码详解

    为了实现迁徙学习,首先是数据集的下载 #利用curl下载数据集 curl -o flower_photos.tgz http://download.tensorflow.org/example_ima ...

  6. CSS 条件判断、等宽字体以及ch单位

    <!DOCTYPE> <html lang="en"> <head> <meta charset="utf-8"> ...

  7. 1、CC2530单片机介绍

    单片机是一种集成电路芯片,包含中央处理器CPU.随机存储器RAM.只读存储器ROM.输入输出I/O接口.中断控制系统.定时/计数器和通信等多种功能部件. 本教程使用的单片机德州仪器生产的CC2530, ...

  8. Modbus

    Modbus 串行链路协议是一个主-从协议.在同一时刻,只有一个主节点连接于总线,一个或多个子节点 (最大编号为 247 ) 连接于同一个串行总线. Modbus 通信总是由主节点发起.子节点在没有收 ...

  9. PEP8规范

    目录 一 代码编排 二 文档编排 三 空格使用 四 注释 五 文档描述 六 命名规范 七 编码建议 代码编排 1缩进,4个空格,不用tab键(因为可能不同系统tab的空格数不一定) 2每行最大长度79 ...

  10. (转载)python: getopt的使用;

    注: 该文转载于https://blog.csdn.net/tianzhu123/article/details/7655499python中 getopt 模块, 该模块是专门用来处理命令行参数的 ...