栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python爬虫学习笔记

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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)]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530062.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号