初入爬虫(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的入门级了解也就不再多说, 但平常使用中, 仍然会遇到很多问题, 在此记录一二. 在查资料的过程中, 发现了两个比较好的资料: 特别是第二个, 相当详细 ...
随机推荐
- 洛谷P4384 制胡窜
这题TM是计数神题......SAM就是个板子,别脑残写错就完事了.有个技巧是快速定位子串,倍增即可. 考虑反着来,就是两个断点切割所有串,求方案数. 大概分类讨论一下......先特判掉一些情况.然 ...
- 【CF1042D】Petya and Array 离散化+树状数组
题目大意:给定一个长度为 N 的序列,给定常数 t,求有多少个区间 [l,r] 满足 \(\sum\limits_{i=l}^{r}a_i<t\). 题解:先跑一边前缀和,问题等价于求有多少个数 ...
- 使用ZXing.Net生成与识别二维码(QR Code)
Google ZXing是目前一个常用的基于Java实现的多种格式的1D/2D条码图像处理库,出于其开源的特性其现在已有多平台版本.比如今天要用到的ZXing.Net就是针对微软.Net平台的版本.使 ...
- T4模版 mysql
MysqlDbhelper.ttinclude <#@ assembly name="System.Core"#> <#@ assembly name=" ...
- POJ 2112 Optimal Milking (Dinic + Floyd + 二分)
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 19456 Accepted: 6947 ...
- 解决mysql乱码问题
在mysql根目录下创建my.ini文件 my.ini内容为: [mysqld] # 设置默认字符集,只会影响新建数据库的默认字符集 character-set-server=utf8
- 【好用的Mac分屏软件】Magnet for Mac 2.3
「Magnet」是一款Mac窗口管理工具. 当您每次将内容从一个应用移动到另一应用时,当您需要并排比较数据时,或是以其他方式进行多任务处理时,你需要妥善放置所有窗口.Magnet 让这一过程清爽又 ...
- 2017-12-15python全栈9期第二天第七节之练习题
#!/user/bin/python# -*- coding:utf-8 -*-print(6 or 2 > 1)print(3 or 2 >1 )print(0 or 5 <4)p ...
- 信用评分卡 (part 7 of 7)
python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...
- kubernetes yaml格式的Pod配置文件
kubernetes yaml文件解析 # yaml格式的pod定义文件完整内容: apiVersion: v1 #必选,版本号,例如v1 kind: Pod #必选,Pod metadata: #必 ...