java爬虫

1、简述

网络爬虫就是模拟浏览器发送请求的过程:爬虫向服务器发送请求,服务器返回数据。
通俗地讲,就是把你手动打开窗口,输入数据等操作用程序代替。用程序替你获取你想要的信息,这就是网络爬虫。

2、应用

1. 搜索引擎

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

2. 数据挖掘

互联网项目通过爬取相关数据主要进行数据分析,获取价值数据。
eg:
1)股票分析——预测股市
2)社会学方面统计预测
3)App下载量分析
eg:
这里写图片描述

3、爬虫原理

1)爬虫目的

一般来讲对我们而言需要抓取的是某个网站或者某个应用的内容,提取有用的价值,进行数据分析。

2)爬虫框架设计

这里写图片描述

3)java爬虫框架

Nutch
Herieritrix
crawler4j
WebCollector
WebMegic

4、demo:使用爬虫框架HttpClient&Jsoup

1)HttpClient

HttpClient是apache组织下面的一个用于处理HTTP请求和相应的开源工具。它不是一个浏览器,也不处理客户端缓存等浏览器的功能。它只是一个类库!它在JDK的基本类库基础上做了更好的封装。
这里写图片描述

HttpClient抓取网页流程
  1. 创建HttpClient对象。
  2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
  3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HttpParams params)方法来添加请求参数;对于HttpPost而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
public class MyHttpClient {
    /**
     * 需求L使用HttpClient爬取传智播客官方网站数据
     * @param args
     * @throws IOException 
     * @throws  
     */

    public static void main(String[] args) throws Exception {

        //创建HttpClient对象
        HttpClient hClient = new DefaultHttpClient();


        //设置响应时间,设置传输源码时间,设置代理服务器
        hClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000)
        .setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000)
        .setParameter(ConnRouteParams.DEFAULT_PROXY, new HttpHost("119.41.236.180",8010));

        //爬虫URL大部分都是get请求,创建get请求对象
        HttpGet hGet = new HttpGet("http://www.itcast.cn/");    
        //向传智播客官方网站发送请求,获取网页源码
        HttpResponse response = hClient.execute(hGet);
        //EntityUtils工具类把网页实体转换成字符串
        String content = EntityUtils.toString(response.getEntity(),"utf-8");
        System.out.println(content);
    }

}
2)Jsoup

jsoup是一款java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。通常在写爬虫程序时,httpClient结合jsoup共同使用即可完成完美的爬虫系统。
httpClient负责模拟浏览器发送请求,jsoup负责解析httpClient请求返回的HTML页面,解析获取需要的数据。

Jsoup获取网页流程
  1. 从一个URL,文件或字符串中解析HTML;
  2. 使用DOM或CSS选择器来查找、取出数据;
  3. 可操作HTML元素、属性、文本。
public class MyJsoup {
    /**
     * 需求:使用Jsoup解析网页源码
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        //使用jsoup向服务器发送请求
        Document doc = Jsoup.connect("http://www.itcast.cn").get();
        //Jsoup使用类似css,Jquery选择器方式获取元素节点
        //Elements elements = doc.getElementsByTag("a");
        //System.out.println(elements.text());
        Elements elements = doc.select("li.w127 a");
        //循环元素
        for (Element element : elements) {
            System.out.println(element.text()+"  :"+element.attr("href"));
        }
    }
}
二者结合:
public class HttpClientVsJsoup {
    /**
     * 需求:使用httpClient和jsoup共同实现爬虫程序
     *     httpClient负责发送请求,获取网页源码
     *     Jsoup负责解析网页
     * @param args
     * @throws IOException 
     * @throws ClientProtocolException 
     */

    public static void main(String[] args) throws Exception {
        //创建HttpClient对象
        HttpClient hClient = new DefaultHttpClient();
        //爬虫URL大部分都是get请求,创建get请求对象
        HttpGet hGet = new HttpGet("http://www.itcast.cn/");    
        //向传智播客官方网站发送请求,获取网页源码
        HttpResponse response = hClient.execute(hGet);
        //EntityUtils工具类把网页实体转换成字符串
        String content = EntityUtils.toString(response.getEntity(),"utf-8");
        //使用Jsoup解析网页
        Document doc = Jsoup.parse(content);
        //使用元素选择器选择网页内容
        Elements elements = doc.select("li.lione a");
        System.out.println(elements.text());
    }
}
其他

获取代理服务器IP
这里写图片描述
确定元素选择器
这里写图片描述

学习参考:链接:https://pan.baidu.com/s/1TeAIYOKTsiJMFK_CAi_2Dg 密码:58uh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值