从今天开始,随便写写博文。恰好刚写了一个关于 网络爬虫的小程序,那么就先写点关于网络爬虫的。
什么是网络爬虫?
百度百科如是说:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫。
维基百科这样解释:网络蜘蛛(Web spider)也叫网络机器人,指的是“自动化浏览网络”的程式。这样的电脑程式是为了自动从网络撷取特定的资料,或为了组织网络上的资料,所设计的“‘自动浏览网络’的程式”。
由此,我们可以看出网络爬虫的基本特征:自动、有一定规则、收集资料。
详细的概念大家可以google或者百度,这里不多说。
网络爬虫的最常用功能就是抓取网页。今天就从最基本的访问url开始。
为了方便开发,这里引入Apache的HttpClient包。它可以处理http连接中的各种问题。
(HttpClient入门:http://www.ibm.com/developerworks/cn/opensource/os-httpclient/,这个地址所讲的HttpClient应该是3.0+版本,现在的4.1版本的HttpClient略有改变,不过大家还是可以参考一下)
使用 HttpClient 需要以下 6 个步骤:
1. 创建 HttpClient 的实例
HttpClient httpClient = new DefaultHttpClient();
2. 创建某种连接方法的实例HttpPost或者HttpGet。在HttpPost 的构造函数中传入待连接的地址
HttpPost httpPost = new HttpPost("http://www.baidu.com/");
3. 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例
HttpResponse httpResponse = httpClient.execute(httpGet);
4. 读 response
HttpEntity httpEntity = httpResponse.getEntity();
5. 释放连接。无论执行方法是否成功,都必须释放连接
httpGet.abort();
httpClient.getConnectionManager().shutdown();
6. 对得到后的内容进行处理
这个只是最基本的网页抓取示例,而当真正的应用到程序中时就会考虑到非常多的问题,比如资源冲突,状态码什么的。
下篇文章就会步入正题,开始一步步设计一个简单的网络爬虫。
大家可以下载Crawler4j看看,代码设计的很合理。