爬虫基础
阅读指导:
本文章含改了爬虫的基础内容,讲解了HTTP组成原理,爬虫的基本流程,Session与Cookie,线程与进程四个内容。
1. HTTP组成原理
1.1 URL,URN,URI
三者定义:
- URL:统一资源定位符
- URN:统一资源名称
- URI:统一资源标识符
三者关系:
URN与URL是URI的子集,在现行市场下,URN使用的非常少,几乎所有的URI都是URL,所以在不严谨的情况下,可以说URI就是URL。
1.2 URL的格式:
scheme://[uesrname:password@]hostname[:poort][/path][;parameters][?query][#fragment]
即:协议;//[用户名和密码]主机地址(域名或IP地址)[端口][路径][制定访问某个资源时的附加信息][查询某类资源][对资源描述的部分补充]
注:用 [] 的部分是非必要的部分
1.3 请求:
请求分为四个部分:请求方式,请求网址,请求头,请求体。
- 请求方式:
主要是get,post两种请求方式。 - 请求网址:
即请求的URL。 - 请求头:
向网页发送请求时,用来伪装等的内容,封装在headers中,一般含cookie,referer,User-Agent 等。 - 请求体:
用于post请求方式中,提交符合请求的表单数据(data)。
1.4 响应
响应分为三个部分:响应状态码,响应头,响应体。
- 响应状态码:
表示服务器的响应状态。常见的有200,404,500,403 - 响应头:
包含了服务器对请求的应答信息,如Content-Type,Sever,Set-Cookie。 - 响应体:
服务器响应的数据(爬虫需要解析的内容)
2. 爬虫的基本流程
a. 获取网页:发送请求,获取网页源代码,常使用requests,urllib库
b. 提取信息:对获取到的网页信息进行解析,提取需要的信息,常使用正则,Beautiful Soup,lxml,pyquery库完成
c. 保存数据:将提取到的信息,保存为TXT,JSON文本,数据库,HTML格式等
3. session与cookie
cookie | session | |
---|---|---|
作用 | 用于记住用户的信息,比如用户的登录状态、个性化设置等 | 用于保存用户的状态信息,比如购物车内容、用户登录信息等 |
存储位置 | 客户端 | 服务器端 |
安全性 | 相对较低,因为它们存储在用户的计算机上,可能会被篡改 | 相对较高,因为数据存储在服务器端,不易被篡改 |
生命周期 | 可以是临时的(会话Cookie),浏览器关闭即失效,也可以是长期的,有设定的过期时间 | 通常在用户会话期间有效,用户关闭浏览器或Session超时后失效 |
数据传输 | 每次HTTP请求都会携带Cookie信息,会增加数据传输量 | 不会随着每个HTTP请求传输,通常只传输一个Session ID |
如何工作 | 服务器通过HTTP响应头将Cookie发送给客户端,客户端的浏览器将其存储,并在之后的每个请求中将其发送回服务器 | 服务器为每个用户创建一个唯一的Session ID,并通过Cookie或其他方式(如URL重写)发送给客户端。客户端在后续的请求中携带这个Session ID,服务器根据这个ID来识别用户并获取其Session信息 |
4. 多线程与多进程的基本原理
4.1 线程与进程
- 进程:是具有一定独立功能的程序在某个数据集合上的一次运动,是操作系统的进行运算调度的一个独立单元。
- 线程:是操作系统的进行运算调度的最小单元,也就是进程中的最小运行单元。
简单来说进程是线程的集合
比如:打开一个浏览器,相当于就打开了一个浏览器进程,在浏览器上面播放视频,音乐,那么播放的视频和音乐就是这个浏览器进程上面的两个线程。
4.2 多线程与多进程
- 多线程:一个进程上面运行多个线程
- 多进程:一次性运行多个进程
多线程的使用场景:
多线程往往运用于一个线程在进行时需要等待时,使用多线程就会提高效率,也是就运用在计算密集型任务时使用,比如爬虫,这时候,使用多线程就会快很多
4.3 并发与并行
- 并发:多个线程对应的多条指令被快速轮换地执行,例如一个处理器,处理A后,再处理B,然后切回来再处理A,循环处理
- 并行:同一时刻,多条指令在多个处理器上面执行