1、爬虫的概念
概念:(spider,网络蜘蛛),通过互联网上一个个的网络节点,进行数据的获取
分类:
通用爬虫(了解):
主要用于搜索引擎(百度、google,搜狗等)
搜索引擎工作原理:
核心部分:通用爬虫按照整个互联网的拓扑结构,进行批量的爬取,然后进行数据的清洗与筛选,然后存入百度的数据库
检索部分:提供给用户一个搜索平台,并且按照一定的顺序把关键字相关的信息展现出来
现在的搜索引擎获取数据的方式:
1)通过通用爬虫获取(过程比较缓慢)
2)主动提交自己的url
3)搜索引擎运营商和DNS的运营商合作(向DNS直接要一些有价值的网站)
信息的排名规则:
1)根据流量(用户的点击量)
2)竞价排名,根据一定的规则以及钱财等因素去决定谁在前面
robots协议:(爬虫的一个约定俗成一个协议)
爬虫在取爬取一个网站的时候,首先要读取这个网站robots.txt文件,查看该文件中规定的那些内容可以爬取,那些不可以,在爬取的时候要严格遵从。搜索引擎爬虫在取爬取的时候一定要遵从robots协议,我们写不需要。
聚焦爬虫:
根据客户或者用户的需求,取定制的爬虫,具有比较强的针对性
聚焦爬虫的工作原理:
1、数据的抓取
面临的问题:http协议、url处理等
反爬:用户代理、ip禁止、验证码、会话信息等
2、数据的解析
遇到的数据:html、xml、json
反爬:js动态加载、js加密等
3、数据的存储
csv文件、关系型数据库(mysql)、redis、json等
对于爬虫而言最核心的部分是解决反爬
内容学习
1、python基础
2、相关的库
请求:urllib、requests、scrapy等
解析:正则、xpath、bs4、selenium组件等
3、多任务处理
多进程、多线程、协程
4、分布式爬虫的部署
2、HTTP协议
1、什么是HTTP协议?
1)是基于请求与响应的应用层协议,底层协议TCP保证了数据可靠传输 2)通过url进行客户端与服务器之间的数据交互 3)是一种C/S(B/S)模式的协议,客户端向服务器发起请求,服务器处理请求并且返回响应 4)该协议是一种无状态的协议(不会记录用户的访问状态)
2、http协议过程:
1)创建TCP链接:客户端与服务器的三次握手:客户端向服务器发出一个是否同意创建连接的信号、服务器回应给客户是否空闲(即是否可以创建连接) 、客户端再次向服务器发起创建连接的信息进而创建连接;通过三次握手以后客户端和服务器就创建出了一数据通路,接下来就可以保证http协议包的可靠传输了
2)客户端向服务器发起http请求:通过url把参数(请求体)以及请求头传递给服务器,请求方式有常见4中,常用get和post
请求头:请求头中包含了本次请求的相关的配置信息(比如数据格式、cookie等),决定了客户端和服务器进行数据交流的方式与格式
请求体:就是参数,客户端向服务提交的内容
get和post请求的区别:
形式上:get请求参数拼接在url后面 post请求不体现在url中
内容上:get请求有数据量的限制(不同的浏览器对url最大长度都有不同的限制),post的请求是不限制请求体数据量的(有的web服务器会有一个最大请求体的限制,比如阿帕奇限制为20M)
3)服务器处理请求,并且把处理结果响应给客户端
4)关闭连接:TCP的四次挥手
3、环境
windows或linux,python3.6 , pycharm(sublime), 后期(scrapy和redis数据库)Ubuntu系统
4、fiddler
面试题:
1、请您解释一下什么是http协议?
2、请谈一下get和post的区别
3、http协议和https协议有什么区别?
4、http协议的常见状态码,及其含义?
5、如何取配置https协议?