可参考网址
https://www.cxyzjd.com/article/zyzy123321/105708570
请求头与相应头
请求头
host 域名
connection 长连接
upgrade-insecure-requests 升级为HTTPS请求
+user-agent 用户代理
+referer 页面跳转处
+cookie 状态保持(判断用户)
authoration
常见状态码
network中抓包得到的原码才是判断依据
elements中原码是渲染后的原码不可做为判断标准
浏览器请求的过程
浏览器
发送所有请求,进行渲染
爬虫
只发送指定请求 不会渲染
骨骼文件
html静态文件
肌肉文件
js/ajax请求
皮肤
css/font/图片
抓包过程
根据发送请求的流程分别在骨骼/肌肉/皮肤响应中查找数据
https://blog.csdn.net/qq_30553235/article/details/79282113
requests
导入
调用get对目标发送请求
相应对象:text/str/conten/bytes
user-agent/reference/cookie
day2
3发送带请求头的请求
requests.get(url,headers={})
4发送带参数的请求
1.url中直接带参数
2.使用params参数
1.构建参数字典
2.发送请求时设置参数字典
5在headers中携带cookies
和3相同
6使用cookies参数保持会话
构建cookies字典
在请求cookies字典赋值给cookies参数
requests.get(url,cookies)
7超时参数timeout的使用
requests.get(url,timeout=3)
8代理
代理ip是一个ip,指向一个代理服务器
正向/反向代理:
是否知道最终服务器的地址
代理分类
匿名度
透明代理/匿名代理/高匿代理
协议
http/https/socks
使用
request.get(url,proxies=proxies)
代理使用成功无报错
使用失败有报错/挂起
requests发送post请求
1.实现方法
requests.post(url,data)
data是一个字典
#编写爬虫逻辑
#url
#headers
#data字典
#发送请求获取相应
#用json模块数据解析
2.post数据来源
多次抓包判断
1.固定值 : 抓包比较不变值
2.输入值: 抓包比较根据自身变化值
3.预设值-静态文件: 需要提前从静态html中获取
4.预设值-发请求: 需要对指定地址发送请求获取数据
5.在客户端生成的 分析js模拟生成数据
requests.session进行状态保持
作用
自动处理cookie
场景
连续多次请求
使用方法
session = requests.session()
response= session.get(url,heders)
response = session.post(url)
day3
数据提取
响应分类
结构化
json数据
json模块
re模块
jsonpath模块
xml数据
re模块
lxml模块
xml和html的区别
xml传输和存储数据
html展示数据
jsonpath(结果为列表,获取值需要索引
场景
xpath
https://www.w3school.com.cn/xpath/index.asp
节点选择语法html
/html/head/title/ 绝对路径
/html//title 相对路径
//title 相对于整个html文档
//title/. 当前节点
//title/./…/… 父节点
. 当前节点
… 当前节点的父节点
/ 隔开节点
/html/body/div[3]/ 第三个div,绝对路径
/html/body/div[3]/div[last()] 选中最后一个
/html/body/div[3]/div[last()-1] 选中倒数第二个
/html/body/div[3]/div[position()>=10] 区间选择
通过属性修饰节点
//div[@id=“content-left”]/div/@id 出现在[]的@是使用标签属性名和属性值修饰节点,出现在结尾的/@是取属性值
通过子节点值修饰节点
//span[i>200] i是节点值
//div[span[2]>=9.4]
通过包含修饰
//div[contains(@id,“qiushi_tag”)] ("id="里带qiushi_tag的)
// span[contains(text(),“下一页”)] (找span标签里带“下一页”的)
selenium
设置https://www.debugger.wiki/article/html/1578144214461538