相关文章链接:
Python爬虫—request模块与验证码识别
Python爬虫—数据解析及案例(4K图片爬取)
一、什么是爬虫:
网络爬虫也叫网络蜘蛛,它指一类自动批量下载网络资源的程序。通过编写程序,模拟浏览器上网,然后让其去互联网抓取数据的过程。
如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物。而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的猎物/数据。
二、爬虫的应用
1、数据采集:
抓取微博评论(机器学习舆情监控)、抓取聘信息(数据分析、挖掘)等
2、搜索引擎:
百度、谷歌
3、模拟操作:
模拟用户操作
4、软件测试:
爬虫自动化测试、爬虫师
5、网络安全:
短信轰炸、web漏洞扫描
三、爬虫在使用场景中的分类
1、通用爬虫:
抓取系统的重要组成部分。抓取的是一整张页面数据。(缺点:大部分内容没用——不同搜索目的,返回内容也相同)
2、聚焦爬虫:
是建立在通用爬虫的基础之上。抓取的是页面中特定的局部内容。
3、增量式爬虫:
检测网站中数据更新的情况。只会抓取网站中最新更新出来的数据。
四、反爬机制(robots.txt协议)
门户网站,可以通过制定相应策略或者技术手段,防止爬虫数据进行网站数据的爬取。、
robots.txt协议:
君子协议。规定了网站中哪些数据可以被爬虫爬取,哪些数据不可以被爬取。查看方式:域名+/robots.txt,如:https://www.taobao.com/robots.txt
五、反反爬策略
爬虫程序可以通过制定相关的策略或者技术手段,破解门户网站中具备的反爬机制,从而可以获取门户网站中的相关数据。
六、爬开发流程
1、单一页面数据的爬取: (补充url:浏览器搜索框中的内容)
url ——>发送请求,获取响应——>提取数据——>保存数据
2、多页面数据的爬取:
发送请求,获取响应——>提取url地址,继续请求
七、爬虫开发的重难点
1、数据的获取
许多网络公共资源为避免爬虫采集,服务端会设置较多反爬措施,因此在开发爬虫的工程中很大的工作内容就是处理这些反爬机制。
2、采集的速度
如果采集速度慢,耗时过长,可能无法满足商业要求,一般采用并发以及分布式来解决速度上的问题。
八、http/https预备知识
大多数商业应用采用的架构:
- c/s 即client(客户端) server(服务端)
- b/s 即brower(浏览器)server(服务端)
- m/s即mobile(移动端)server(服务端)
以上统称客户端与服务端
http是一个应用层协议
九、http
1、概念:就是服务器和客户端进行数据交互的一种形式。
http是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。
HTTP是基于TCP/IP通信协议来传递数据的(HTML文件、图片文件,查询结果等),三次握手四次挥手。
2、HTTP请求流程:
浏览器搜索东西,输入的是URL,浏览器会将其自动转换为HTTP协议。
一次http请求的基本流程是,由用户端向服务端发起一次请求(request),而服务器在接受到以后返回给客户端一个响应(response)。所以一次完整的http请求包含请求和响应两部分。
浏览器发送http请求的过程:
域名解析 -->
发起TCP的3次握手 -->
建立TCP连接后发起http请求 -->
服务器响应http请求,浏览器得到html代码 -->
浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) -->
浏览器对页面进行渲染呈现给用户.
3、URL(浏览器搜索框里的内容!)
URL(Uniform Resource Locator)统一资源定位符,是用于标识某一处资源的地址。也就是我们常说的网址。
4、URL组成:
协议+域名(端口默认80)+路径+参数
- 常用请求头信息(Request Headers):
- User-Agent:请求载体的身份标识
内容包含发出请求的用户信息,通常UA包含浏览者的信息,主要是浏览器的名称版本和所用的操作系统。
2、Connection:请求完毕后,是断开连接还是保持连接
客户端与服务器链接类型,keep-alive保持连接,close关闭连接
常用响应头信息:Content-Type:服务器响应回客户端的数据类型
5、HTTP特点:
HTTP是无连接的
HTTP是媒体独立的
HTTP是无状态的
十、https:
HTTPS(Hyper Text Transfer Protocol over Secure Layer,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。
在http的基础上再加了一层SSL/TLS协议,数据在传输过程中是加密的。
- 加密方式
- 对称秘钥加密
- 非对称秘钥加密
- 证书秘钥加密(https协议采用方式)