网站首页 > java教程 正文
随着大数据技术兴起,互联网江湖再现波澜。数据采集这门一本万利的生意,一直被python这个门派所独揽,独步天下,无人能敌。但是,Java的爬虫技术仍是不可小觑。接下来,小猿就带大家一起来看看关于Java爬虫的入门知识。
1
入门秘籍之Http协议和robots协议
《HTTP协议》,HyperText Transfer Protocol也就是超文本传输协议。是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件, 图片文件, 查询结果等)。
Http协议的工作原理:HTTP协议工作于客户端-服务端架构上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求,服务器端接到请求之后把相应的资源信息响应给客户端,从而完成一个请求响应的过程。
如图所示:
Http协议有以下特点:
1.HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
2.HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
3.HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
2
数据消息格式
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
如图所示:
请求行以一个请求符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:
Method Request-URI HTTP-Version CRLF
实例:GET /login.jsp HTTP/1.1
其中GET是本次请求所采用的请求方法,HTTP请求方法有七种:
请求头部信息:
请求头部由key/value键值对组成,每行一对。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
Accept: text/html,image/*
Accept-Charset: UTF-8
Accept-Encoding: gzip,compress
Accept-Language: en-us,zh-cn
Host: www.zhidisoft.com:80
If-Modified-Since: Tue, 11 Jul 2017 18:23:51 GMT
Referer: http://www.zhidisoft.com/index.jsp
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Connection: close/Keep-Alive
Date: Tue, 11 Jul 2017 18:23:51 GMT
3
HTTP响应(response)
服务器端对一个HTTP请求处理完毕之后,服务器会返回给客户端一些信息,这就是HTTP响应。一个HTTP响应代表服务器向客户端回送的数据,它也包括三个部分:一个状态行、若干消息头、以及实体内容 。其中的一些消息头和实体内容都是可选的,消息头和实体内容间要用空行隔开:
HTTP状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
HTTP-Versio:表示服务器HTTP协议的版本
Status-Code:表示服务器发回的响应状态代码
Reason-Phrase:表示状态代码的文本描述
状态码用于表示服务器对请求的处理结果。
响应状态码分为5类,如下所示:
消息报头:
与请求报头类似,不同在于请求报头附带的是关于请求的相关信息,而消息报头则附带的是服务端应答的相关信息。
常见的响应头:
Content-Encoding: gzip
Content-Type: text/html; charset=UTF-8
Last-Modified: Tue, 11 Jul 2017 18:23:51 GMT
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
Connection: close/Keep-Alive
Date: Tue, 11 Jul 2017 18:23:51 GMT
4
Robots协议
《robots协议》,Robots协议全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,也称为爬虫协议、机器人协议等。Robots协议可以屏蔽一些网站中比较大的文件,如:图片,音乐,视频等,节省服务器带宽;可以屏蔽站点的一些死链接。方便搜索引擎抓取网站内容;设置网站地图连接,方便引导蜘蛛爬取页面。
Robots协议的语法格式:
Disallow: /表示禁止访问,Allow: /表示允许访问。
在写robots.txt时需特别注意的是,/前面有一个英文状态下的空格(必须是英文状态下的空格)。
禁止搜索引擎访问网站中的某几个文件夹,以a、b、c为例,写法分别如下:
Disallow: /a/
Disallow: /b/
Disallow: /c/
禁止搜索引擎访问文件夹中的某一类文件,以a文件夹中的js文件为例,写法如下:
Disallow: /a/*.js
只允许某个搜索引擎访问,以Baiduspider为例,写法如下:
User-agent: Baiduspider
Disallow:
禁止访问网站中的动态页面
User-agent: *
Disallow: /*?*
只允许搜索引擎访问某类文件,以htm为例,写法如下:
User-agent: *
Allow: .htm$
Disallow: /
禁止某个搜索引擎抓取网站上的所有图片,以Baiduspider为例,写法如下:
User-agent: Baiduspider
Disallow: .jpg$
Disallow: .jpeg$
Disallow: .gif$
Disallow: .png$
Disallow: .bmp$
robots.txt文件存放在网站根目录下,并且文件名所有字母都必须小写。
来源于猿来如此呀公众号,更多资讯可点击下方链接了解更多。
猜你喜欢
- 2024-09-09 Java 爬虫遇上数据异步加载,试试这两种办法
- 2024-09-09 实战Java爬虫课程-猿天地(java爬虫入门教程)
- 2024-09-09 如何编写一个Python网络爬虫?点进来,我教你!
- 2024-09-09 Java编写爬虫抓取今日头条内容(java抓取今日头条数据)
- 2024-09-09 一款分布式爬虫管理平台,支持多种语言和框架
- 2024-09-09 编写Java网络爬虫(java 写爬虫)
- 2024-09-09 三个Python爬虫版本,带你轻松入门爬虫!
- 2024-09-09 App 爬虫必备技能:三步完成 Android 逆向
- 2024-09-09 Python 3 学习笔记:爬虫基础入门(python爬虫:入门+进阶)
- 2024-09-09 来来来!带你了解Python爬虫的方方面面!
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)