爬虫定义、分类和流程

  1. 爬虫的定义:

网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。爬虫就是模拟浏览器的行为,越像越好,越像就越不容易被发现。原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。

  1. 爬虫的分类

通用爬虫:通常指搜索引擎的爬虫

聚焦爬虫:针对特定网站的爬虫

  1. 爬虫的用途
  • 今日头条

  • 网易云音乐

  • 12306抢票

  • 网站自动投票

  • 短信轰炸

  • 等等

    4.爬虫的流程

    **

Robots 协议:

网站通过 Robots 协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是道德层面上的约束 例如:淘宝的 robots 协议

总结

爬虫概念:

模拟浏览器发送网络请求,接收请求响应。只要是浏览器(客户端)能做的事情,爬虫都能够做。

爬虫的分类:聚焦爬虫、通用爬虫

爬虫的流程:

1、向起始 url 发送请求,并获取响应
2、对响应进行提取
3、如果提取 url,则继续发送请求获取响应
4、如果提取数据,则将数据进行保存

HTTP 与 HTTPS 的概念

HTTP(超文本传输协议)

是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。 协议:协议规定了通信双方必须遵守的数据传输格式,这样通信双方按照约定的格式才能准确的通信。 无状态:无状态是指两次谅解通信之间是没有任何联系的,每次都是一个新的连接,服务端不会记录前后的请求信息

1、浏览器通过域名解析服务器(DNS)获取IP地址

2、浏览器先向 IP 发起请求,并获取相应

3、在返回的响应内容(html)中,会带有

css、js、图片等 url 地址,以及 ajax 代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应

4、浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css 等内容会修改页面的内容,js也可以重新发送请求,获取响应

5、从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染



网络模型对应关系

1、HTTP、RTSP、FTP -------> 应用层
2、TCP、UDP -------> 传输层
3、IP -------> 网络层
4、数据链路 -------> 数据链路层
5、物理介质 -------> 物理层

1、scheme:协议(例如:http, https, ftp)
2、host:服务器的 IP 地址或者域名
3、port:服务器的端口(如果是走协议默认端口,缺省端口80)
4、path:访问资源的路径
5、query-string:参数,发送给 http 服务器的数据
6、anchor:锚(跳转到网页的指定锚点位置)

请求方式:

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。HTTP1.1 新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

请求方式描述:
GET请求指定的页面信息,并返回实体主体。
HEAD类似于 get 请求,只不过返回的响应中没有具体的内容,用于获取报头POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
PUT从客户端向服务器传送的数据取代指定的文档的内容
DELETE请求服务器删除指定的页面。
CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。OPTIONS允许客户端查看服务器的性能。
TRACE回显服务器收到的请求,主要用于测试或诊断。

常见请求头:

请求头作用

Cookie:Cookie

User-Agent:浏览器名称

Referer:页面跳转处

Host:主机和端口号

Connection:链接类型

Upgrade-Insecure-Requests:升级为 HTTPS 请求

Accept:传输文件类型

Accept-Encoding:文件编解码格式

x-requested-with : XMLHttpRequestajax 请求

HTTP响应:

  • 响应格式:

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行(回车符 + 换行符)和响应正文。

  • 响应头:

响应头作用Location这个头配合 302 状态码使用,告诉用户端找谁。Set-Cookie设置和页面关联的 CookieContent-Type服务器通过这个头,回送数据的类型Server服务器通过这个头,告诉浏览器服务器的类型Content-Length服务器通过这个头,告诉浏览器回送数据的长度Connection服务器通过这个头,响应完是保持链接还是关闭链接

  • http状态码:

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。HTTP 状态码的英文为 HTTP Status Code。HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP 状态码共分为 5 种类型

1xx信息,服务器收到请求,需要请求者继续执行操作
2xx成功,操作被成功接收并处理
3xx重定向,需要进一步的操作以完成请求
4xx客户端错误,请求包含语法错误或无法完成请求
5xx服务器错误,服务器在处理请求的过程中发生了错误

常见的 HTTP 状态码:

  • 200 - 请求成功
  • 301 - 资源(网页等)被永久转移到其它 URL
  • 404 -请求的资源(网页等)不存在

    500 - 内部服务器错误

HTTPS:

1、 HTTP + SSL (安全套接字层),即带有安全套接字层的超本文传输协议

2、 默认端口号:443

  • https作用:

在传输过程中对数据进行加密,防止中间路由器、交换机等中间的路由设备对数据进行篡改

  • HTTP 与 HTTPS 优缺点

HTTP 因为不需要对数据进行加密所以性能更高,但是安全性差。HTTPS 虽然安全性高,但是因为浏览器和服务器端需要对数据进行加解密,所以占用服务器资源。

  • 当前形势

注意:目前 HTTPS 是未来主流,微信小程序,iOS 客户端,android 客户端的接口提供都需要 HTTPS 接口支持

爬虫必备的web知识的更多相关文章

  1. 网络爬虫必备知识之requests库

    就库的范围,个人认为网络爬虫必备库知识包括urllib.requests.re.BeautifulSoup.concurrent.futures,接下来将结对requests库的使用方法进行总结 1. ...

  2. 网络爬虫必备知识之urllib库

    就库的范围,个人认为网络爬虫必备库知识包括urllib.requests.re.BeautifulSoup.concurrent.futures,接下来将结合爬虫示例分别对urllib库的使用方法进行 ...

  3. 网络爬虫必备知识之concurrent.futures库

    就库的范围,个人认为网络爬虫必备库知识包括urllib.requests.re.BeautifulSoup.concurrent.futures,接下来将结对concurrent.futures库的使 ...

  4. 爬虫概要及web微信请求分析

    一.爬虫概要 1.网络爬虫是什么 百度百科:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常 ...

  5. 前端开发者必备的Nginx知识

    摘要: 最常用的Web服务器 -- Nginx 原文:前端开发者必备的Nginx知识 作者:ConardLi Fundebug经授权转载,版权归原作者所有. Nginx在应用程序中的作用 解决跨域 请 ...

  6. [转帖]java必备的开发知识和技能

    java必备的开发知识和技能 https://blog.csdn.net/qq_34405062/article/details/89389646 学习一下java 其实上学那会儿学的 早就过时加落伍 ...

  7. 如何学习FPGA?FPGA学习必备的基础知识

    如何学习FPGA?FPGA学习必备的基础知识 时间:2013-08-12 来源:eepw 作者: 关键字:FPGA   基础知识       FPGA已成为现今的技术热点之一,无论学生还是工程师都希望 ...

  8. Android开发学习必备的java知识

    Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...

  9. 六个前端开发工程师必备的Web设计模式/模块资源

    Yahoo的设计模式库 Yahoo的设计模式库包含了很多可以帮助开发设计人员解决遇到的问题的资源,包括开发中常常需要处理的导航,互动效果及其布局网格等大家常用的组件和模块 响应式设计模式库 这个响应式 ...

随机推荐

  1. react 打印页面怎么实现?

    2017-11-10 react 打印页面怎么实现?

  2. wordpress通过$wpdb获取一个分类下所有的文章

    在wordpress程序根目录下新建一个php文件,粘贴下面的代码 如下面的代码注释,修改$CID这个分类id,就可以获取这个分类下的文章了.这个查询需要联合三个表wp_posts.wp_term_r ...

  3. Egret入门学习日记 --- 第九篇(书中 2.7~2.8节 内容)

    第九篇(书中 2.7~2.8节 内容) 昨天记录到了 2.6节 ,那么今天就从 2.7节 开始. 这个 2.7节 有7个小段,有点长,总结一下重点: 1.调试项目的两种方法. 2.运行项目的两种窗口选 ...

  4. 数据结构与算法学习(二)——Master公式及其应用

    本篇文章涉及公式,由于博客园没有很好的支持,建议移步我的CSDN博客和简书进行阅读. 1. Master公式是什么? 我们在解决算法问题时,经常会用到递归.递归在较难理解的同时,其算法的复杂度也不是很 ...

  5. 遵循统一的机器学习框架理解高斯混合模型(GMM)

    遵循统一的机器学习框架理解高斯混合模型(GMM) 一.前言 我的博客仅记录我的观点和思考过程.欢迎大家指出我思考的盲点,更希望大家能有自己的理解. 本文参考了网络上诸多资料,特别是B站UPshuhua ...

  6. 最新 美团java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.美团等10家互联网公司的校招Offer,因为某些自身原因最终选择了美团.6.7月主要是做系统复习.项目复盘.LeetCode ...

  7. 如何使用Curator监听zookeeper事件变化

    掌握zookeeper事件监听机制,非常重要,可以说是跨入了进阶的门槛,只有掌握了如何监听某个节点或路径,我们才能在节点变化后,做一些我们想做的事,包括: 1,配置文件同步 2,主从切换 3,分布式队 ...

  8. [转帖]前端 crypto-js aes 加解密

    前端 crypto-js aes 加解密 2018.04.13 11:37:21字数 891阅读 59767 https://www.jianshu.com/p/a47477e8126a 原来前端也有 ...

  9. Redis学习笔记(一):Redis的数据类型

    之前笔者常常接触的数据库是关系型数据库,其中MySQL接触居多.近年来NoSQL兴起,各种新型数据库不断诞生,redis就是NoSQL中的一种热门数据库. 注:此类文章仅仅作为笔者的学习和阅读积累,若 ...

  10. Win10 鼠标右键新建菜单添加自定义文件

    1. 引言 在鼠标右键(右单机)新建菜单中添加自定义文件,例如:写字板,markdown等. 效果图: 2. 操作步骤(以Win10为例) 1. win+R输入regedit进入注册表 2. 这里以添 ...