c httpclient抓取网页(博客系列Java爬虫入门简介(二)——HttpClient请求)

优采云 发布时间: 2021-12-17 01:20

  c 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对应的页面的源码。这样我们的第一个爬虫就成功下载了网门需要的页面内容。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线