c httpclient抓取网页(博客系列Java爬虫入门简介(二)——HttpClient请求)
优采云 发布时间: 2021-12-17 01:20c httpclient抓取网页(博客系列Java爬虫入门简介(二)——HttpClient请求)
数据是科学研究活动的重要依据。本系列博客将介绍如何使用Java工具获取网络数据。
博客系列
Java爬虫介绍(一)——HttpClient请求(本文)
Java爬虫介绍(二)——Jsoup解析HTML页面
首先说一下爬虫的基本原理。爬虫的基本原理很简单,就是利用程序访问互联网,然后将数据保存到本地。我们都知道,互联网提供的大部分服务都是以网站的形式提供的。我们需要的数据一般都是从网站获取的,比如电商网站的商品信息、商品评论、微博信息等,爬虫类似于手动复制粘贴我们看到的数据,但是手动获取大量数据显然是不可能的。因此,我们需要使用工具来帮助获取知识。用程序写爬虫就是用程序写一些网络访问规则,保存我们的目标数据。接下来,让我们从头开始构建一个爬虫案例。
一、环境准备
这里的环境是指开发环境。本博客将使用Java编写爬虫。因此,有必要搭建一个Java编程环境。需要安装的软件包括(注意我的电脑使用的是windows X64程序,请选择对应的JDK版本,使用8.0及以上):
1、JDK 8.0:
2、IntelliJ IDEA:
JDK安装和环境变量配置网上有很多,就不多说了。IntelliJ IDEA是傻瓜式的安装,基本不会有问题。不要说什么。
二、创建项目
环境安装好后,我们打开IntelliJ IDEA,然后创建一个Maven项目。Group Id 和 Artifact Id 自己写也没关系。创建后,我们的目录将如下图所示。
好了,开始写爬虫吧。
三、第一个例子
首先,假设我们需要爬取数据来学习网站第一页的blog()。首先我们需要使用maven导入HttpClient4.5.3包(这是最新的包,可以根据需要使用其他版本)。然后,我们在 pom.xml 中添加以下语句:
org.apache.httpcomponents
httpclient
4.5.3
1234567
Java本身提供了一个关于网络访问的包,在,然后还不够强大。于是Apache基金会发布了一个开源的http请求包HttpClient,提供了很多网络访问功能。在这里,我们也使用这个包来编写爬虫。好了,在使用 pom.xml 下载这个包之后,我们就可以开始编写我们的第一个爬虫示例了。代码如下(注意我们的程序是在test包下构建的,所以需要在这个包下运行):
package test;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
/**
* 第一个爬虫测试
* Created by DuFei on 2017/7/27.
*/
public class FirstTest {
public static void main(String[] args) {
//建立一个新的请求客户端
CloseableHttpClient httpClient = HttpClients.createDefault();
//使用HttpGet方式请求网址
HttpGet httpGet = new HttpGet("http://www.datalearner.com/blog");
//获取网址的返回结果
CloseableHttpResponse response = null;
try {
response = httpClient.execute(httpGet);
} catch (IOException e) {
e.printStackTrace();
}
//获取返回结果中的实体
HttpEntity entity = response.getEntity();
//将返回的实体输出
try {
System.out.println(EntityUtils.toString(entity));
EntityUtils.consume(entity);
} catch (IOException e) {
e.printStackTrace();
}
}
}
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
如上代码所示,爬虫第一步需要搭建一个客户端,即请求者。这里我们使用CloseableHttpClient作为我们的请求者,然后判断以何种方式请求哪个URL,然后使用HttpResponse获取请求的地址即可得到相应的结果。最后取出HttpEntity,进行转换,得到我们请求的URL对应的内容。上述程序对应的输出如下图所示:
很明显,这就是我们需要的URL对应的页面的源码。这样我们的第一个爬虫就成功下载了网门需要的页面内容。