爬虫的概念和基本流程基本了解(二)

http以及https的概念和区别:

HTTPS比HTTP更安全,但性能更低

  • HTTP:超文本传输协议,默认端口号是80
    • 超文本:是指超过文本,不仅限于文本;还包括图片、音频、视频等内容
    • 传输协议:是指使用共用约定的固定格式来传递转换成字符串的超文本内容
  • HTTPS:HTTP+SSL(安全套接字层),即带有安全套接字层的超文本传输协议,默认端口号是443
    • SSL对传输的内容(超文本,也就是请求体或响应体)进行加密
  • 可以打开一个浏览器访问一个url,右键检查,点击net work,点击一个url,查看http协议的形式
  • 他们的连接方式不同,HTTP连接简单,明文传输,是无状态的,而HTTPS由于有了SSL所以是加密传输的,更加安全。
  • HTTPS需要到ca申请证书,多半都是要花钱。

常见的请求头与响应头

请求头

  • Content-Type (请求内容的类型)
  • Host (主机和端口号)
  • Connection (链接类型)
  • Upgrade-Insecure-Requests (升级为HTTPS请求)
  • User-Agent(用户代理,告诉服务器发送请求的浏览器及机器信息)
  • Referer (页面跳转处,我们是从哪一个页面跳转过来的)
  • Cookie (Cookie,状态保持)
  • Authorization (用于表示HTTP协议中需要认证资源的认证信息,比如jwt认证)

响应头

  • Set-Cookie (对方服务器设置cookie到用户浏览器的缓存)

Webkit浏览器引擎 数据库和模板渲染成一个结果返回来 浏览器引擎就是用来将结果返回给用户的 自动将文件结果做成一个效果返回给用户

常见的响应状态码

302 跳转 新的url在响应的Location头中给出

303 浏览器对于POST的响应进行重定向至新的url

307 浏览器对于GET的响应重定向至新的url

503 服务器由于维护或者负载过重未能应答,在响应中可能会携带Retry-After响应头;有可能是因为爬虫频繁访问url,使服务器忽视爬虫的请求,最终返回503。

在爬虫中多了博弈的过程,状态码是不可信的,一切以是否抓包得到的响应中获取到的数据为准。

network中抓包得到的源码才是判断依据,elements中的源码是渲染之后的源码,不能作为判断标准。

浏览器的运行过程

  • 1.浏览器拿到域名通过dns域名解析拿到ip后,先向地址栏中的url发起请求,并获取响应
  • 2.在返回的响应内容(html)中,会含有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他请求,并获取相应的响应
  • 3.浏览器每返回一个响应就对展示出的结果进行添加(加载),js、css等内容会修改页面的内容,js也可以重新发送请求,获取响应
  • 4.从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改----这个过程叫做浏览器的渲染

浏览器

​ 发送所有请求,进行渲染

爬虫

​ 只发送指定请求,不会渲染

浏览器展示的结果可以由多次请求对应的多次响应共同渲染出来,而爬虫是一次请求对应的一个响应

骨骼文件

​ html静态文件

肌肉文件

​ js/ajax请求

皮肤

​ css/font/图片等

抓包过程:

  • 根据发送请求的流程分别在 骨骼 / 肌肉/ 皮肤响应中查找数据

注意:

但是在爬虫中,爬虫只会请求url地址,对应的拿到url地址对应的响应(该响应的内容可以是html,css,js,图片等)

浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样,是因为爬虫不具备渲染的能力

  • 浏览器最终展示的结果是由多个url地址分别发送的多次请求对应的多次响应共同渲染的结果
  • 所以在爬虫中,需要以发送请求的一个url地址对应的响应为准来进行数据的提取
发布了104 篇原创文章 · 获赞 33 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/WangTaoTao_/article/details/105493436