认识网络爬虫

Part1 爬虫简介

爬虫在使用场景中的分类

通用爬虫:

  • 获取系统重要组成部分,抓取的是一整张页面的数据

  • 聚焦爬虫:

    • 是建立在通用爬虫的基础之上,抓取的页面中特定的局部内容。
  • 增量式爬虫:

    • 检测网站中数据更新的情况,只会抓取网站中最新更新出来的数据。

反爬机制

门户网站可以通过制定相应的策略或者技术手段,房子爬虫程序进行网站数据的爬取

反反爬策略

爬虫程序可以通过制定相关的策略或技术手段,破解门户网站具备的反爬机制,从而可以获取门户网站

robots.txt协议

君子协议,规定了网站中那些数据可以被爬虫爬取那些数据不可以被爬取

Part2 http协议

— 概念:就是服务器和客户端进行数据交互的一种形式。

— 请求头信息:User-Agent:请求载体的身份标识

image-20220123124311560

— Connection:请求完毕后,是断开连接还是保持连接

— Content-Type:服务器响应回客户端的数据类型

https协议:

— 安全的超文本传输协议,涉及到数据加密

加密方式:

  • 对称密钥加密
  • 非对称密钥加密
  • 证书密钥加密(采用该方式)

请求:

1.请求行 -> 请求方式(get/post) 请求url地址 协议
2.请求头 -> 放一些服务器要使用的附加信息,加请求头可以伪装的更像浏览器,一个反爬小处理
3.请求体 -> 一段放一些请求参数

响应:

1.状态行 -> 状态码 404
2.响应头 -> 放一些客户端要是用的一些附加信息
3.响应体 -> 服务器返回的真正可客户端要用的内容(HTML、Json)等

请求头中最常见的一些重要内容(爬虫需要)

1.User-Agent:请求载体的身份标识(用什么浏览器发送的请求)
2.Referer:防盗链(这次请求是从哪个页面来的?反爬会用到)
3.Cookie:本地字符串数据信息(用户登录信息,反爬的token)

响应头中的一些重要内容

1.cookie:本地字符串数据信息(用户登录信息,反爬的token)

2.各种神奇的莫名奇妙的字符串(需要经验,一般都是token字样,防止各种攻击和反爬)

请求方式

GET: 显示提交

POST: 隐式提交

上述两行了解即可

Part3数据解析与提取

三种数据解析方式

  1. re解析
  2. bs4解析
  3. xpath解析

这三种方式可以混合进行使用,完全以结果做导向,只要能拿到你想要的数据,用什么方案并不重要,掌握这些之后,再考虑性能的问题

正则表达式

Regular Expression,正则表达式,一种使用表达式的方式对字符串进行匹配的语言法则

我们抓取到的网页源代码本质上就是一个超长的字符串,想从里面提取内容,用正则很合适

正则的优点:速度快,效率高,准确性高

正则的语法:使用元字符进行排列组合用来匹配字符串,在线测试正则表达式

元字符:具有固定含义的特殊符号

常用元字符:

1	.	匹配除换行以外的任意字符
2	\w	匹配字符或数字或下划线
3	\s	匹配任意的空白符
4	\d	匹配数字
5	\n	匹配一个换行符
6	\t	匹配一个制表符

7	^ 	匹配字符串的开始
8	$	匹配字符串的开始

9	\W	匹配非字符或数字或下划线
10	\D	匹配非数字
11	\S	匹配非空白字符
12	a|b	匹配字符a或字符b
13	()	匹配括号内的表达式,也表示一个组
14	[...] 匹配字符组中的字符
15	[^...]	匹配除了字符组中字符的所有字符

量词:控制前面的元字符出现的次数

1	*		重复零次或更多次
2	+		重复一次或更多次
3	?	    重复零次或一次
4	{n}		重复n次
5	{n,}	重复n次或更多次
6	{n,m}	重复n到m次

贪婪匹配和惰性匹配

1	.*	贪婪匹配 	#尽可能多匹配
2	.*?	惰性匹配	#尽可能少的匹配

re模块

(?P<分组名字>正则) 可以单独从正则匹配的内容中进一步提取内容

函数 说明
re.search() 在一个字符中搜索匹配正则表达式的第一个位置,返回match对象
re.match() 从一个字符串的开始位置匹配正则表达式,返回match对象
re.findall() 搜索字符串,以列表类型返回全部能匹配的子串
re.split() 将一字符串按照正则表达式匹配结果进行分割,返回列表类型
re.finditer() 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
re.sub() 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
修饰符 描述
re.I 是匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括行在内的所有字符
re.U 根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B
re.X 该标志通过给予你灵活的格式以便将正则表达式写的更容易理解

你可能感兴趣的:(爬虫,爬虫)