爬虫基础学习20191"/>
JAVA爬虫基础学习20191
专门收集互联网信息的程序叫作网络爬虫
通用采集器
定制开发的采集器
基本功能
下载网页
遍历URL地址
高效遍历
遍历算法
- 广度优先
- 深度优先
- 最佳优先
爬虫的危险
- 相对人而言,它有更快的检索速度和更深的层次, 所以它有可能使一个站点瘫痪
- 做一个有礼貌的爬虫
- 多线程爬虫会开启多个线程来爬取,使用很多session进行连接,造成类似于攻击的效果,别人的正常业务无法进行了
- 爬虫还可以拿到别人不愿意公开的数据,即隐私类的信息
- 一般情况下,爬虫会可以爬取站下所有不需要口令就可以访问的页面
– 亮明身份,告诉服务器自己是爬虫
– 有节制和限制地进行爬取操作
– 让抓取任务平均到时间段上,时间段扩大一些更好
理解网站地址
Robots协议
- 网站隐私保护
– robots.txt自觉文件
– 设置Robots Meta标签 - 爬虫就是自动获取知识的第一步
- 爬虫在某种程度上就是一个http客户端应用,相当于一个浏览器做的一部分事情
HttpCore的协议细节
- HTTP
- TCP
- DNS
- UDP
- IP
- 网络接口1,2,3
协议
- 在java中,一旦和被采集的web服务器建立连接,对网络资源的操作就好象对本地文件的操作一样简单了。
- 网络中使用url来标出网络资源的位置
- 直接用URL类和存入网页的服务器建立连接,获取网页源代码
- URL
– 协议名
– 主机名:端口号
– 资源路径 - HTTP的8种可能的请求方式,爬虫常用的有3种
– GET
– POST
– HEAD - HTTP的请求格式
<request line> 请求行
<headers> 头信息
<blank line> 空行
[<request-body>] 主体
- HTTP的头信息组成
– 1 通用头
– 2 请求头
– 3 响应头
– 4 实体头
服务器返回的响应第一行就包括状态码
- 3个数字组成
- 用于识别web服务器处理的情况
- 第一个数字决定了响应的类别,后两个是大类下的小类分类
1xx 信息响应类,表示接收了在处理中
2xx 处理成功响应类,正在理解,接受
3xx 重定向类,进一步处理
4xx 客户端错误,请求错了
5xx 服务器错误,服务器不能正确执行该请求
使用HttpClient下载网页
- 开源项目HttpClient
– 基包:httpcore-4.1.2.jar
– 应用包:httpclient-4.1.2.jar
– 日志包:commons-logging-1.1.1.jar
抓取暗网
- 没有入口可以用来遍历所有信息的网站对于爬虫来说就是暗网
- 一般形式是:前台是一个表单,获取参数后搜索得到结果页,它们是由后台数据库动态产生的
- 一般有同一个模板
- PhantomJS,是一个基于WebKit的服务器端JS的运行环境
- Selenium是一浏览器外挂,可以使用它让浏览器自动下载某个网页或者填入登录密码等信息
– Selenium-WebDriver直接调用本机的浏览器,执行自动化任务—常用于自动化测试
– 核心代码由javascript来完成,可以运行在firefox或ie上
– 提供有Selenium java API
– 如果是firefox浏览器,就直接调FirefoxDriver即可
– 而ChromeDriver比FirefoxDriver更稳定
语言 ISO 8859系,全是欧系语言
- ISO 8859-1 Latin-1 西欧语言
- ISO 8859-2 Latin-2 中欧
- ISO 8859-3 Latin-3 南欧
- ISO 8859-4 Latin-4 北欧
- 斯拉夫语
- 阿拉伯语
- 希腊语
- 希伯来语
- 北日耳曼语
- 泰语
- 波罗的语
汉字编码
- GB2312 简体字
- BIG5 繁体字
- GBK 简繁和一些符号
- GB18030 汉字大一统标准
网页有编码,还要进一步识别网页中使用的语言
- 网页编码转换为字符串编码
- 网页中的字符可能被转义成英文字符表示
使用Crawler4j,是一个单机版爬虫软件
更多推荐
JAVA爬虫基础学习20191
发布评论