网络爬虫基础知识(Java实现)

1.1 爬虫概论

网络爬虫(Web crawler)也叫网络蜘蛛Web spide自动检索工具(automatic indexer),是一种自动化浏览网络程序,或者说是一种网络机器人

爬虫被广泛用于互联网搜索引擎或其他类似网站,以获取或更新这些网站的内容和检索方式。它们可以自动采集所有其能够访问到的页面内容,以供搜索引擎做进一步处理(分检整理下载的页面),而使得用户能更快的检索到他们需要的信息。

通俗的讲,就是把你手动打开窗口,输入数据等等操作用程序代替。用程序替你获取你想要的信息,这就是网络爬虫

1.2 爬虫应用

1.2.1 搜索引擎

爬虫程序可以为搜索引擎系统爬取网络资源用户可以通过搜索引擎搜索网络上一切所需要的资源。搜索引擎是一套非常庞大且精密的算法系统,搜索的准确性,高效性都对搜索系统有很高的要求。

1.2.2 数据挖掘

爬虫除了用来做搜索外,还可以做非常多的工作,可以说爬虫现在在互联网项目中应用的非常广泛。

互联网项目通过爬取相关数据主要进行数据分析,获取价值数据

 HttpClient抓取网页流程

使用HttpClient发送请求、接收响应很简单,一般需要如下几步

1. 创建HttpClient对象。

扫描二维码关注公众号,回复: 2311317 查看本文章

2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。

3. 如果需要发送请求参数,可调用HttpGetHttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。

4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse

5. 调用HttpResponsegetAllHeaders()getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponsegetEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。

6. 释放连接。无论执行方法是否成功,都必须释放连接

需要用的的jar包

简单案例源代码

 

 1 import java.io.IOException;
 2 
 3 import org.apache.http.HttpHost;
 4 import org.apache.http.HttpResponse;
 5 import org.apache.http.client.ClientProtocolException;
 6 import org.apache.http.client.HttpClient;
 7 import org.apache.http.client.methods.HttpGet;
 8 import org.apache.http.conn.params.ConnRouteParams;
 9 import org.apache.http.impl.client.DefaultHttpClient;
10 import org.apache.http.params.CoreConnectionPNames;
11 import org.apache.http.util.EntityUtils;
12 import org.jsoup.Jsoup;
13 import org.jsoup.nodes.Document;
14 import org.jsoup.select.Elements;
15 
16 public class MyHttpClient {
17     /***
18      * 需求:使用httpClient爬取传智播客官方网站数据
19      * @param args
20      * @throws Exception 
21      * @throws ClientProtocolException 
22      */
23     public static void main(String[] args) throws Exception {
24         
25         //创建HttpClient对象
26         HttpClient hClient = new DefaultHttpClient();
27         
28         
29         //设置响应时间,设置传智源码时间,设置代理服务器 防止被对方判断出为爬虫程序
30         /*hClient.getParams().
31         setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000)
32         .setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000)
33         .setParameter(ConnRouteParams.DEFAULT_PROXY, new HttpHost("118.190.95.43", 9001));*/
34         
35         //爬虫URL大部分都是get请求,创建get请求对象
36         HttpGet hget = new HttpGet("http://www.stdu.edu.cn/index.php/2012-04-11-16-29-00/administration.html");        
37         //向石家庄铁道大学网站发送请求,获取网页源码
38         HttpResponse response = hClient.execute(hget);
39         //EntityUtils工具类把网页实体转换成字符串
40         String content = EntityUtils.toString(response.getEntity(), "utf-8");
41         //System.out.println(content);//整个页面的源代码
42         Document doc = Jsoup.parse(content);
43         //使用元素选择器选择网页内容
44         /*Elements elements = doc.select("ul");
45         System.out.println(elements.text());*/
46         //Elements elements1 = doc.select("title");
47     
48         Elements elements1 = doc.select("a");
49         String shuchu0 = elements1.text();
50         String shuchu1 = elements1.get(1).text();
51         System.out.println(shuchu0);
52         System.out.println(shuchu1);
53        // Elements elements4 =  doc.select("a");
54         Elements elements4 =  doc.select("a[href]");
55         
56         System.out.println(elements4.html());
57         //附 标签选择器使用参考链接
58         
59     }
60 
61 }

 运行结果截图:

 

猜你喜欢

转载自www.cnblogs.com/zyt-bg/p/9351383.html