爬虫基础

爬虫基础

一、HTTP基本原理

1.应用架构

  • c/s 即 client server 客户端 服务端
  • b/s 即 browser server 浏览器 服务端
  • m/s 即 moblie server 移动端 服务端

2.URI和URL

  • URI中文是统一资源标志符,URL中文是统一资源定位符
  • URI包含URL和URN,URN用得非常少,URN只命名资源而不指定如何定位资源,发送http请求时,通过URL对网络资源进行定位
  • URL是用来标识某一处资源的地址,即网址。URL的组成:访问协议、域名(IP地址和端口)、路径、参数

3.超文本

超文本,英文名hypertext,网页由超文本解析而成,在网页右击选择检查即可打开浏览器的开发者工具,Elements面板可查看网页的源代码(超文本)

Elements面板

4.HTTP和HTTPS

  • 目前互连网上90%的网络传输都是基于HTTP协议。HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP协议的默认端口是80
  • HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。HTTP协议是基于TCP/IP协议的,而HTTPS是在HTTP协议的基础之上,再加了一层SSL/TLS协议,数据在传输过程中是加密的。HTTPS协议的默认端口是443

5.HTTP请求过程

  • 一次HTTP请求的基本流程:有客户端向服务端发起一次请求(request),而服务器在接收到以后返回给客户端一个响应(response)

  • 一次完整的HTTP请求包含请求和响应两部分,开发者模式下Network可以显示访问当前请求网页时发生的所有网络请求和响应

Network面板
  • Name:请求的名称,一般为URL最后一部分
  • Status:响应的状态码,判断发送请求后响应的状态
  • Type:请求的文档类型,document、stylesheet、script、png等
  • Initiator:请求源,标记请求由谁发起
  • Size:从服务器下载的文件和请求的资源大小,若是缓存中取得的资源则显示from cache
  • Time:发起请求到获取相应所用的总时间
  • Waterfall:网络请求的可视化瀑布流

点击其中条目可查看详细信息

General部分
  • Request URL: 请求的url
  • Request Method: 请求的方法
  • Status Code: 响应状态码
  • Remote Address: 远程服务器的端口和地址
  • Referrer Policy: Referer判别策略

6.请求

请求,由客户端向服务端发出,分为4部分内容:请求方法(Request Method)、请求的网址(Request URL)、请求头(Request Headers)、请求体(Request Body)

(1).请求报文
# 请求报文的格式
请求方法 空格 URL 空格 协议及版本 回车符 换行符
头部字段名 : 值 回车符 换行符
		···
头部字段名 : 值 回车符 换行符
回车符 换行符
# 举例
GET / HTTP/1.0 \r\nHost:www.baidu.com\r\n\r\n
(2).请求方法(Request Method)

HTTP/1.0定义了三种请求方法:GET,POST和HEAD方法

HTTP/1.1新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法

序号方法描述
1GET请求指定的页面,并返回页面内容
2HEAD类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定资源提交数据惊醒数据处理(例如提交表单或上传文件),数据包含在请求体中
4PUT从客户端向服务器传送的数据取代指定文档中的数据
5DELETE请求服务器删除指定页面
6CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
7OPTIONS允许客户端查看服务器的性能
8TRACE回显服务器收到的请求,主要用于测试或诊断

GET和POST的区别:GET请求中的参数包含在URL中,数据可以从URL中看到,提交的数据最多有1024字节。POST请求的URL不包含这些数据,数据都是通过表单形式传输,包含在请求体中,提交的数据大小没有限制

(3).请求的网址(Request URL)
(4).请求头(Request Headers)
Request Headers部分
  • Accept: 指定客户端可接受哪些类型的信息
  • Accept-Encoding: 指定客户端能接收的编码方式
  • Accept-Language: 指定客户端可接受的语言类型,en、en-us指英文,zh、zh-cn指中文
  • Cache-Control: 指定请求和响应遵循的缓存机制
  • Connection: 客户端与服务器链接类型,keep-alive指保持链接,close指关闭链接
  • Cookie: 网站为了辨别用户进行会话跟踪而存储在用户本地的数据,用于维持当前访问会话
  • Host: 指定请求资源的域名(IP地址和端口号)
  • User-Agent: 简称UA,使服务端识别客户端使用的操作系统及版本、浏览器及版本等信息,做爬虫时用于伪装成浏览器
  • Referer:表明产生请求的网页来自哪个URL,用于跟踪WEB请求来源
  • Content-Type:表明具体请求中的媒体类型信息,text/html指HTML格式,application/json指JSON类型
  • Content-length:表明内容长度
  • Content-Range:响应的资源范围
(5).请求体(Request Body)

请求体的内容一般是POST请求中的表单数据,GET请求的请求体为空

7.响应

响应,由服务端返回给客户端,分为3部分内容:响应状态码(Response Status Code)、响应头(Response Headers)、响应体(Response Body)

(1).响应状态码(Response Status Code)

当客户端向服务端发起一次请求后,服务端在返回的响应头中会包含一个HTTP状态码,HTTP的状态码是由三位数字来表示的,由第一位数字来表示状态码的类型,一般来说有五种类型

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误
(2).响应头(Response Headers)
Response Headers部分
  • Cache-Control: 指定请求和响应遵循的缓存机制
  • Content-Encoding: 指定响应内容的编码
  • Content-Type: 指定返回的媒体类型信息
  • Date: 标识响应产生的时间
  • Expires: 指定响应的过期时间
  • Last-Modified: 指定资源的最后修改时间
  • Server: 指定服务器的信息
  • Set-Cookie:设置Cookies,响应头中的Set-cookie告诉浏览器将此内容放置在Cookies中,下次请求携带Cookies请求,每写入一个cookie都会生成一个Set-cookie
(3).响应体(Response Body)

响应的正文数据都在响应体中,Preview区域可以看到网页的源代码,即响应体的内容,它是解析的目标

Preview区域

8.HTTP协议的特点

  • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间
  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型
  • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就较快

9.HTTP请求测试网站

www.httpbin.org

二、爬虫的基本原理

1.爬虫的概念

网络爬虫也叫网络蜘蛛,它特指一类自动批量下载网络资源的程序,更加专业和全面对的定义是:网络爬虫是伪装成客户端与服务端进行数据交互的程序

2.爬虫的应用

  • 数据采集

    大数据时代来临,数据就是核心,数据就是生产力,越来越多的企业开始注重收集用户数据,而爬虫技术是收集数据的一种重要手段。

  • 搜索引擎

    百度,谷歌等搜索引擎都是基于爬虫技术。

  • 模拟操作

    爬虫也被广泛用于模拟用户操作,测试机器人,灌水机器人等

3.爬虫的流程

  • 1.找到目标数据
  • 2.分析请求流程
  • 3.构造http请求
  • 4.提取清洗数据
  • 5.数据持久化

4.爬虫的难点

  • 数据的获取

    网络公共资源都是为用户准备的,为了避免被爬虫采集,服务端会设置非常多的图灵测试,阻止爬虫的恶意爬取,也即是反爬措施,爬虫开发工程师在开发爬虫时,需要解决这些反爬措施

  • 采集的速度

    大数据时代,需要巨大的数据量,动辄千万条的级别,甚至上亿条,如果采集速度跟不上,耗时过长,那么就达不到商业要求,一般我们会采取并发以及分布式来解决速度上的问题。

三、会话和Cookies

1.无状态HTTP

HTTP的一个特点是无状态,指HTTP协议对事务处理是没有记忆能力的。因此出现了用于保持HTTP连接状态的技术:会话和Cookies。会话在服务端,用来保存用户的会话信息。Cookies在客户端,浏览器在下次访问网页时会自动附带上它发送给服务器,服务器通过识别Cookies并鉴别用户,判断用户的登录状态,返回对应的响应

2.Cookies

Cookies指某些网站为了辨别用户、进行会话跟踪而存存储在用户本地终端上的数据,可以理解为一个凭证,在开发者工具中打开Application面板,选择Cookies可查看网站的Cookie

Application面板
Cookies部分
  • Name:Cookie的名称,一旦创建便不可修改
  • Value:Cookie的值,若为Unicode字符则需要字符编码,若为二进制数据,则需要BASE64编码
  • Domain:可以访问该Cookie的域名
  • Max Age:Cookie失效的时间,单位秒
  • Path:Cookie的使用路径,/表示该域名下所有页面均可访问此Cookie
  • Size:Cookie的大小
  • HTTP:Cookie的httponly属性
  • Secure:该cookie是否仅被使用安全协议传输,默认为false

3.会话(Session)

session是基于cookie的,Session的目的是在一个客户从打开浏览器到关闭浏览器这个期间内,发起的所有请求都可以被识别为同一个用户。而实现的方式则是,在一个客户打开浏览器开始访问网站的时候,会生成一个cookie,SessionID,这个ID每次的访问都会带上,而服务器会识别这个SessionID并且将与这个SessionID有关的数据保存在服务器上,由此来实现客户端的状态识别

Session是存储在服务器上的数据,只由客户端传上来的SessionID来进行判定,所以相对于Cookie,Session的安全性更高,一般SessionID会在浏览器被关闭时丢弃,或者服务器会验证Session的活跃程度,例如30分钟某一个SessionID都没有活跃,那么也会被识别为失效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值