八爪鱼·云采集网络爬虫软件
www.bazhuayu.com
java网络爬虫如何实现
在万物互联的时代,互联网上有着大量的数据,如电商类网站的商品基础信息、商品评论等;微博信息、知乎问答、微信公众号文章等;获取并分析这些数据,有利于商家快速掌握消费者动向,把握新闻舆论,洞悉市场先机,从而改善自己的产品和服务,提升自己的市场份额。而如何简单高效的获取到这些数据呢?爬虫是一个比较常见的方法。
爬虫的原理很简单,就是通过编写程序访问互联网,然后将数据保存到本地电脑中。众所周知,互联网提供的服务大部分都是以网站的形式提供的。爬虫和我们手工将在网站上看到的数据复制粘贴下来是类似的,只是手工复制效率低,获取到的数据量也十分有限。所以,我们需要借助工具来获取大量的网站数据。Java也是爬虫语言的一种,下面就以一些具体实例为大家介绍java网络爬虫是如何实现的。
1、使用HttpClient简单抓取网页
首先,假设我们需要爬取数据学习网站上第一页的博客(http://www.datalearner.com/blog )。首先,我们需要使用导入HttpClient 4.5.3这个包(这是目前最新的包,你可以根据需要使用其他的版本)。 Java本身提供了关于网络访问的包,在java.net中,然后它不够强大。于是Apache基金会发布了开源的http请求的包,即HttpClient,这个包提供了非常多的网络访问的功能。在这里,我们也是使用这个包来编写爬虫。好了,使用pom.xml下载完这个包之后我们就可以开始编写我们的第一个爬虫例子了。其代码如下(注意,我们的程序是建立在test包下面的,因此,需要在这个包下才能运行): package test;
import org.apache.http.HttpEntity;import
org.apache.http.client.methods.CloseableHttpResponse;impor
八爪鱼·云采集网络爬虫软件
www.bazhuayu.com
t 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(\);
//获取网址的返回结果
CloseableHttpResponse response = null; try {
response = httpClient.execute(httpGet); } catch (IOException e) { e.printStackTrace(); }
八爪鱼·云采集网络爬虫软件
www.bazhuayu.com
//获取返回结果中的实体
HttpEntity entity = response.getEntity();
//将返回的实体输出 try {
System.out.println(EntityUtils.toString(entity)); EntityUtils.consume(entity); } catch (IOException e) { e.printStackTrace(); } } }
如上面的代码所示,爬虫的第一步需要构建一个客户端,即请求端,我们这里使用CloseableHttpClient作为我们的请求端,然后确定使用哪种方式请求什么网址,再然后使用HttpResponse获取请求的地址对应的结果即可。最后取出HttpEntity转换一下就可以得到我们请求的网址对应的内容了。上述程序对应的输出如下图所示:
八爪鱼·云采集网络爬虫软件
www.bazhuayu.com
显然,这就是我们需要的网址对应的页面的源代码。于是我们的第一个爬虫就成功的将网门需要的页面的内容下载下来了。 2、HttpClient的详细使用
在上篇博客里面,我们讲述了如何使用HttpClient请求一个简单的网页。但是,在实际中,有很多网页的请求需要附带许多参数设置。主要包括请求的Header设置以及路径参数。在HttpClient 4.3及以上的版本中,这个过程主要包含如下步骤:
使用List
初始化自定义的HttpClient客户端,并设置头部
八爪鱼·云采集网络爬虫软件
www.bazhuayu.com
使用HttpUriRequest设置请求
使用HttpClient请求上述步骤中的HttpUriRequest对象 我们看一个代码示例
import com.google.common.collect.Lists;import org.apache.http.Header;import org.apache.http.HttpHeaders;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import
org.apache.http.client.methods.HttpUriRequest;import org.apache.http.client.methods.RequestBuilder;import org.apache.http.client.utils.URIBuilder;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicHeader;import org.apache.http.message.BasicNameValuePair;
import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import java.util.List; /************
* HttpClient 使用示例 * ***********/