爬虫基础
“可见即可爬~”
爬虫概念
如果互联网是一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的猎物/数据
网络爬虫也叫网络蜘蛛,特指一类自动批量下载网络资源的程序 网络爬虫是伪装成客户端与服务端进行数据交互的程序
爬虫的应用
1.数据采集 2.搜索引擎 3.模拟操作 4.软件测试 5.网络安全
爬虫的分类(略)
爬虫的一般开发流程:
1.最简单的单一页面数据的爬取:
url->发送请求,获取响应->提取数据->保存数据
2.多页面数据的爬取
发送请求,获取响应——>提取url地址,继续请求
爬虫开发的重难点
1.数据的获取(反爬) 2.采集的速度
HTTP和HTTPS
大多数商业应用采用的架构: 1.c/s client server 2.b/s broser(浏览器) server 3.m/s mobile server
以上统称为客户端与服务端
HTTP协议(超文本传输协议)
爬取想要的数据前,一定要明确其使用的是什么协议
HTTP是基于TCP/IP通信协议来传输数据的
TCP/IP通信的三次握手与四次挥手
三次握手建立连接
client:嘿,服务端girl!我想和你建立连接 server:好呀,嘻嘻 client:真好,那我们开始(数据)交互吧!
(进行数据交互ing)
四次挥手断开连接
client:我已经和你交互(数据)完了,我们断开连接吧! server:你确定要断开连接吗? server:那你断开连接吧 client:欧克,那我断开连接了
HTTP请求流程:
我们日常用浏览器搜索东西,输入的是URL,浏览器会将其自动转换为HTTP协议
一次http请求的基本流程,有客户端向服务端发起一次请求(request),而服务器在接收到以后返回给客户端一个响应(response).所以一次完成的http请求包含请求和响应两部分
浏览器发送http请求的过程:
1.域名解析
2.发起TCP的3次握手
3.建立TCP连接后发起HTTP请求
4.服务器响应http请求,浏览器得到html代码
5.浏览器解析html代码,并请求html代码中的资源(js,css,图片等)
6.浏览器对页面进行渲染呈现给用户
tip: 在网页的右键检查network->name->request headers view parsed下的connection:keep-alive保持常连接,就不用频繁三次握手和四次挥手了
浏览器获取的内容(elements的内容)包含:url地址对应的响应+js+css+picture 爬虫会获取:url地址对应的响应
url(浏览器搜索框里的内容)
发送http请求时,通过url对网络资源进行定位
url:统一资源定位符。用来标识某一处资源的地址,也叫网址
组成:协议+域名(端口默认80)+路径+参数
http协议的端口号默认为80可以不写,http协议的端口号默认为443可以不写,(域名可以确定是哪一台电脑,而端口号是为了确定是哪台电脑的哪一个应用)
域名通常是IP地址的映射
http请求格式
客户端发送一个HTTP请求到服务器的请求消息包括一下部分:请求行,请求头,空行和请求数据
请求方法
分类:
OPTIONS
PUT
DELETE
TRACE
CONNECT
常用方法是GET 和 POST
GET:负责从服务器获取数据 POST:负责向服务器提交数据
请求头
http请求正文
请求正文通常是使用POST请求中表单数据,而对于GET请求,请求体则为空
在爬虫中,如果构造POST,需要正确的content-type,并了解各种请求库的各个参数设置时使用的是哪种content-type,不然可能会导致post提交后无法正常响应
HTTP响应格式
由四个部分组成,分别是: 状态行(响应行) 消息报头 空行 响应正文
http协议的特点
HTTP是无连接的 HTTP是媒体独立的 HTTP是无状态的
保持http连接状态的技术是会话和Cookies
https协议,安全版的HTTP
http是基于tcp/ip协议的,而https是在http协议的基础之上,再加一层SSL/TLS协议,数据在传输过程中是加密的
http是明文传输的而https是密文传输,所以较安全但性能低
会话技术
会话在服务端,就是网站的服务器,用来保存用户的会话信息;cookies在客户端,也可以理解为浏览器端
Cookie
指某些网站为了辨别用户身份,进行session跟踪而存储在用户本地终端上的数据(通常经过加密)
Cookie可以理解为一个凭证
1.实际是由服务器发给客户端的特殊信息 2.这些信息以文本文件的方式存放在客户端 3.客户端每次向服务器发送请求的时候都会带上这些特殊信息 4.服务器在接收到Cookie以后,会验证cookie的信息,以此来辨别用户的身份
爬虫为什么要使用cookie
好处:
能够访问登陆页面
有一定的反爬作用
坏处:
请求太频繁有可能被识别为爬虫
一般使用多账号解决
Session
一个浏览器窗口从打开到关闭这个期间
在一个客户从打开浏览器到关闭浏览器这个期间,发起的所以请求都可以被识别为同一个用户,session是基于cookie的
简单的爬虫程序
TODO:
我的爬虫思路
TODO: