java爬虫知识总结
●爬虫原理:
通过URL获得网页地址并获得源码内容的IO流后,使用按行读取,将源码保存在本地的文件中,从而获得需要处理的原始数据(网页源码)。同时在按行读取的过程中,使用正则匹配对读取数据进行比对,找到其中的超链接标签(<a.*href = .+/a>)并进行保存,以便于进行下一个次网页的爬取,最终达到对起始网页进行指定深度的爬取。可以通过实现多线程提高爬虫效率。
●java爬虫实现之核心Java知识涉及:
1、URL知识的运用:
**URL:实列化URL,获得链接的地址。
**URLConnection:获得地址的链接。同时可以通过此类得链接的IO流(字节输入流)。
2、正则匹配:
** Matche类,Pattern类的使用。
**超链接字段的匹配规则:<a.*href = .+/a>
**超链接字段的范列:<a href="http://www.w3school.com.cn/" target="_blank">Visit W3School!</a>
3、多线程的使用:
**自定义线程类:继承Thread类或者实现Runnable类,覆写run()方法(算法)
**synchronized关键字的运用:设置同步代码块或同步方法,实现对共享资源的排队使用(数据队列)
》使用线程提高处理效率的原理:在线程中建立同步代码块,使不同线程之间共享数据。保证在资源足够的前提下,多个线程同时处理一个问题,实现并发效果。
》可能产生的问题:线程因时间差对资源进行非法访问。
》通过控制线程运行状态限制线程资源的访问。如线程的休眠、唤醒等。如果当前资源不足,便将请求资源的线程挂起,进入休眠状态,当资源满足条件时,在唤醒等待的线程。
4、String类型:
**常用操作方法的使用:字符串的截取,返回指定子字符串位置等
**String类型也对正则匹配进行直接支持,但没有直接使用。
5、IO流:
**对IO流的熟练使用:字节操作流,字符操作流,缓存流,打印流,转换流,管道流(未使用)。
**IO流的封装与转换,基础流(字节,字符)->封装流(缓存)
**IO流的向上转型实列化。
6、java类集:可以看做数组类型的升级版
**List<K>接口:可重复元素集,
**被实现的常用子类:ArrayList
**Set<K>接口:不可重复元素集
**被实现的常用子类:HashSet
**Map<K,V>接口:二元映射集
**被实现的常用子类:HashMap

浙公网安备 33010602011771号