python爬虫学习笔记

python爬虫学习笔记

用程序模拟浏览器,输入一个网站从该网站中获取资源或者内容

  1. 服务器渲染:在服务器端直接把数据和html整合在一起,统一返回给浏览器

  2. 客户端渲染:在浏览器端、第一次请求只要一个html骨架,第二次请求拿到数据,进行数据展示,在页面源代码中,看不到数据

  3. 浏览器抓包工具

  4. HTTP超文本传输协议 HTML超文本标记语言

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

请求:

请求行->请求方式 请求url地址协议
请求头->放服务器使用的附加地址

请求体->请求参数

响应:

状态行->协议 状态码(404 302)
响应头->客户端要使用的一些附加消息

响应体->服务器返回的真正客户端的内容(HTML,json)等

请求头重要内容

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

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

响应头中一些重要的内容:

cookie:本地字符串数据信息(用户登录信息,反爬的token)
各种神奇的莫名其妙的字符串(这个需要经验了,一般都是token字样,防止各种攻击和反爬)

请求方式:

GET:显示提交

POST:隐式提交

request第三方模块

pip install requests

JSON 语法规则

JSON是一个标记符的序列。是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。这套标记符包含六个构造字符字符串数字和三个字面名

JSON是一个序列化的对象数组

\1. 六个构造字符

begin-array = ws %x5B ws ; [ 左方括号

begin-object = ws %x7B ws ; { 左大括号

end-array = ws %x5D ws ; ] 右方括号

end-object = ws %x7D ws ; } 右大括号

name-separator = ws %x3A ws ; : 冒号

value-separator = ws %x2C ws ; , 逗号

re正则表达式

常用元字符

操作符	说明	实例
.	表示任何单个字符	
[....]	字符集,对单个字符给出取值范围	[abc]表示a、b、c、[a-z]表示a到z单个 字符
[^...]	非字符集,对单个字符给出排出范围	[^abc]表示非a或b或c的单个字符
*	前一个字符0此或无限次扩展	abc*表示ab,abc,abcc等
+	前一个字符1次或无限次扩展	abc+表示abc,abcc等
?	前一个字符0次或1次扩展	abc?表示ab,abc
|	表示表达式中任意一个	abc|def表示abc、def
{m}	扩展前一个字符m次	ab{2}c表示abbc
{m,n }	扩展前一个字符m到n次(含n)	ab{1,2}c表示abc,abbc
^	匹配字符串开头	^abc表示abc且在一个字符串的开头
$	匹配字符串结尾	abc$ 表示abc且在一个字符串的结尾
()	分组标记,内部只能使用“或”操作符	(abc)表示abc,(abc|def)表示abc、def
\d	数字,等价于[0-9]	
\D	等价于 [^0-9]	
\s	任意一个空白字符	
\S	任意一个非空白字符	
\w	单词字符,等价于[A-Za-z0-9_]	
\w	等价于[^A-Za-z0-9_]

控制字符的个数,量词

字符	功能	位置	表达式实例	完整匹配的字符串
*	#匹配前⼀个字符出现0次或者⽆限次,即可有可⽆	用在字符或(...)之后	abc*	abccc
+	#匹配前⼀个字符出现1次或者⽆限次,即⾄少有1次	用在字符或(...)之后	abc+	abccc
?	#匹配前⼀个字符出现1次或者0次,即要么有1次,要么没有	用在字符或(...)之后	abc?	ab,abc
{m}	#匹配前⼀个字符出现m次	用在字符或(...)之后	ab{2}c	abbc
{m,n}	#匹配前⼀个字符出现从m到n次,若省略m,则匹配0到n次,若省略n,则匹配m到无限次	用在字符或(...)之后	ab{1,2}c	abc,abbc
.*贪婪匹配  
.* ? 惰性匹配   

其他

re.complie(r"\d+)   #预加载正则表达式
#findall:匹配字符串所有符合正则的内容
#finditer:匹配字符串所有的内容返回的是迭代器
#serch找到一个就返回
re.compile()
re.S #让.能匹配换行符
(?P<分组名字>正则) 可以单独从正则匹配的内容提取

bs4解析-HTML

按照HTML唯一属性进行查找,可以分层查找

与HTML相结合以标签分割

pip install bs4

<标签 属性='值' 属性='值'>
	被标记的内容
</标签>

Xpath是在HTML文档中搜索内容的语言:按照节点的关系进行查找,类似找文件夹找文件

html是xml的一个子集

pip install lxml

from lxml import etree
etree.XML().xpath()
/text()提取文本
//所有子代
/*/通配符任意节点
li[1] #小li第一个 []索引
[@xxxx=xxx]   属性筛选
for+./当前节点继续查找

requests进阶


模拟浏览器登录->处理cookie
防盗链处理->

代理防止被封ip

过程

登录->得到cookie
带着cookie去请求到书架url->内容
必须把上面两个操作连起来
可以把session进行请求->session是一连串的请求,在此过程中cookie不会丢失

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jUAWQTQp-1637138997559)(C:%5CUsers%5C16027%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20211116211932050.png)]

录->处理cookie
防盗链处理->

代理防止被封ip


过程

登录->得到cookie
带着cookie去请求到书架url->内容
必须把上面两个操作连起来
可以把session进行请求->session是一连串的请求,在此过程中cookie不会丢失


[外链图片转存中...(img-jUAWQTQp-1637138997559)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科技树AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值