概念:Spider(网络蜘蛛),通过互联网生的一个个的节点,获取其中的数据,然后进行分析存储
爬虫的三个过程:数据的获取、数据的分析、数据的存储
爬虫的分类
通用爬虫:
主要用于搜索引擎,百度、谷歌、360、必应等
工作原理:
数据的获取=>网页的分析=>数据的存储=>对数据进行过滤清洗=>通过一个检索服务给用户提供搜索的窗口(这个就是一个普通的web网站)
所有引擎是如何获取数据的:
1、通过百度蜘蛛爬取(百度蜘蛛掌握了整个互联网的拓扑),速度较慢
2、自身角度:主动的把接口提交给百度(百度的蜘蛛就会比较快的识别到)
3、百度的角度:和DNS运营商合作,把一些有价值的网站收录
网站的排名规则(SEO):
1、通过流量来排名,通过点击量用户量等指标
2、在其他网页中设置友情链接
3、竞价排名,谁给的钱多,谁排在前面
robots协议:
搜索引擎的蜘蛛在去爬取网页的时候,首先会去读取该网站的robots.txt文件,根据文件的规定去爬取响应的内容(允许的拿走,不允许的别动),如果某个网站没有robots.txt文件,搜索引擎蜘蛛就会把网站中所有的内容爬取
【注意】robots协议在做搜索引擎的时候是必须要遵守的,对于我们而言不用管
聚焦爬虫:
根据客户(或者个人)的需求去定制的爬虫
工作原理:
三个过程
1、数据的抓取
技术:http协议、url处理等,框架:urllib、requests、scrapy等
反爬策略:ip禁止、通过检测访问的频率来禁止ip、设置用户代理、设置验证码等 主要是阻止客户端向服务发送请求
2、数据的分析
技术:数据类型(html、json、xml、js等),框架:xpath、bs4、selenium+webdriver等
反爬:js数据、加密数据
3、数据的存储
技术:数据的清洗;csv数据、txt、MySQL、redis等
爬虫的核心:处理反爬机制许多网站为了保护自己的信息,会做一些反爬。爬虫最终要解决的问题就是如何解决反爬问题(所有的反爬策略最终都是可以解决的,只是时间和金钱代价的问题)
2、HTTP协议
1、什么是HTTP协议?
1)基于请求与响应的应用层协议,底层是TCP,传输层可靠;2)通过url来进行客户端与服务器之间的交流 3)是一种C/S(B/S)模式的协议,客户端通过url向服务器发起请求,服务器对请求进行处理然后响应 4)该协议无状态(即不保存客户的会话信息)
2、http协议过程:
1)创建TCP链接:客户端与服务器进行三次握手: 客户端向服务器发起一个请求是否创建链接信号、服务器回应给客户端是否建立链接、客户端向服务器发出创建链接的信号进而建立链接;三次握手以后,客户端和服务器就建立了一个数据的通路,就可以把一些应用层的数据包进行传递
2)客户端向服务器发出请求:通过url把数据参数传递给服务器,请求的方式有4种,常见的是get和post
请求头:请求头中包含整个请求的配置信息(决定了这次请求的的性质)
请求体:就是参数
get请求和post请求
形式上:get的请求体(参数)是拼接在url后面的,post的的请求体在url中不体现
内容上:get默认限制一定的大小(不同的浏览器对url最大长度的要求不一样),post请求默认是不限制长度的(有时候web服务器会对其(上传)作限制,比如阿帕奇限制20M)
3)服务端处理客户端的请求,然后把处理结果响应给客户端(通过url)
4)关闭连接:TCP的四次挥手
面试题:
1、请您解释一下什么是http协议?
2、请谈一下get和post的区别
3、http协议和https协议有什么区别?
4、http协议的常见状态码,及其含义?
5、如何取配置https协议?
3、环境
windows或linux,python3.6 , pycharm(sublime), 后期(scrapy和redis数据库)Ubuntu系统
4、fiddler
抓包工具