初入爬虫(java)
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)的更多相关文章
- 初入Java后端之Servlet
初入Java后端之Servlet 后端 Servlet 什么是Servlet? Servlet实际上是一个按照Servlet规范写的Java类.是运行在Web服务端的Java应用程序.与Java程序 ...
- Scala初入
何为Scala物 Scala为基于JVM虚拟机中的面向对象与函数式编程思想并且完全兼容Java的混合编程语言,可以是Scala与Java是同根同源的,既然Scala与JAVA都是基于JVM之上的编程语 ...
- 初入SG-UAP
初入SG-UAP SpriderMan 关注 2019.06.19 14:10 字数 1130 阅读 10评论 0喜欢 0 初次接触SG-UAP,将自己的见解以文字形式记录下来,希望能对初入的伙伴们有 ...
- 初学HTML5、初入前端
学习HTML5是一个漫长的过程,当中会遇到很多技术与心态上的变化.刚开始学习,我们不能发力过猛,需要一个相对稳定的状态去面对.多关注一些自己感兴趣的网站和技术知识,建立自己的信心与好奇心,为以后的学习 ...
- 0x00linux32位汇编初入--前期准备
0x00汇编初入--前期准备 一.汇编工具 在linux平台下常用的编译器为as,连接器为ld,使用的文本编辑器为vim,汇编语法为att 以下是一些工具: addr2line 把地址转换为文件名和行 ...
- 初入职场的建议--摘自GameRes
又开始一年一度的校招了,最近跑了几个学校演讲,发现很多话用短短的一堂职业规划课讲还远远不够,因为那堂课仅仅可能帮大家多思考怎样找到一份合适的工作,并没有提醒大家怎样在工作中发展自己的职业. 见过这么多 ...
- 老李分享:网页爬虫java实现
老李分享:网页爬虫java实现 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821 ...
- 【Xbox one S】开箱&开机&初入坑心得
再来一发水贴,先上产品标准照镇贴: 前言 身为一个资深单机游戏玩家,常年混迹在PC平台,但内心深处一直对主机有种迷之向往,感觉那才是单机游戏的正处之地,坐沙发上拿着手柄对着电视跌宕起伏才是正确的游戏姿 ...
- Git初入
Git记录 使用git 也有一段时间了, git的入门级了解也就不再多说, 但平常使用中, 仍然会遇到很多问题, 在此记录一二. 在查资料的过程中, 发现了两个比较好的资料: 特别是第二个, 相当详细 ...
随机推荐
- Navicat Premium 12 破解(MySQL、MariaDB、MongoDB、SQL Server、SQLite)
打开注入到安装目录中的exe中 破解提示(还没好,继续看下去) 如果你安装的是中文版,选一下中文版(英文默认即可),获取一下key(名字和组织可以自定义) 打开Navicat,选择注册(第一次打开选注 ...
- Wireshark:couldn't run dumpcap in child process(附带Linux下探索过程)
之前都是直接使用Kali里面安装好的Wireshark和Win下的,Ubuntu的来个小计 PS:解决方法不重要,我觉得更重要的是这个摸索的过程 解决方法 # 安装wireshark sudo apt ...
- eclipse 设置
修改工作空间默认编码:Window --> Preferences --> General --> Workspace --> Text file encoding --> ...
- iview tree 获取选中子节点的整条数据链
这样子获取到数据是,checked等于true的,获取不到他的父级,父级的父级 解决办法代码如下: //需要有一个唯一ID //==================================== ...
- bzoj2839 集合计数
F.A.Qs Home Discuss ProblemSet Status Ranklist Contest 入门OJ ModifyUser Logout 捐赠本站 2839: 集合计数 Time ...
- php关联Apache和nginx
编辑apache配置文件httpd.conf,以apache支持php vim /etc/httpd/httpd.conf添加如下二行 AddType application/x-httpd-php ...
- IO 流读取文件时候出现乱码 文件编码格式问题 怎么转换解决方法
在使用下面这个写法时候UTF-8文件编码 在读取时候出现乱码问题. File myFile=new File("文件路径"); BufferedReader in = new Bu ...
- Day30--Python--struct, socketserver
1. struct struct.pack 打包 def pack(fmt, *args): # known case of _struct.pack """ pack( ...
- kettle连接mysql数据库并进行数据分析
1.数据库链接驱动 如果没有安装对应的数据库链接驱动,在数据库链接的过程中,可能会报某个数据库连接找不到的异常,因此需要下载对应驱动后(安装步骤可以参见“怎么在官网上下载java连接mysql的驱动j ...
- urllib 学习一
说明:Urllib 是一个python用于操作URL的模块 python2.x ----> Urillib/Urllib2 python3.x ----> Urllib ...