今日内容概要
-
form表单
-
requests模块
可以模拟浏览器朝服务端发送各式各样的请求
-
cookie与session
-
requests模块小案例(网站的基本防爬措施)
今日内容详细
form表单
作用:能够获取前端用户输入的信息发送给后端
以用户注册为例
form表单重要的几个参数
action
控制数据提交到哪个后端
method
控制朝后端提交的请求方法
form表单默认使用的是get请求
获取用户输入需要使用input标签
input标签一般情况下需要结合label标签一起使用
但是不配合也不影响
<label for="d1" class="c1"</label>
用户名:<input type="text" class="c1" id="d1"><label for="">
</label>
input标签
type属性
text 普通文本
password 密文展示
date 日期
radio 单选
checkbox 多选
redio和checkbox如果要设置默认选中加checked即可
file 上传文件
email 获取邮箱格式
submit 触发提交数据的动作
button 普通按钮 本身没有任何功能
reset 重置输入
select标签 下拉框
一个个选项就是一个个的option标签
默认是单选的
加上multiple变为多选
默认选中加selected
textarea标签
获取大段的文本输入
标签两个非常重要的参数
id
类似于身份证号 同一个html页面中id不能重复
class
类似于面向对象里面的类的继承 一个标签可以有多个类
requests模块
爬虫的基本流程
发送请求 获取响应 解析内容 保存数据
requests模块
能够模拟浏览器发送请求 比urllib模块更加方便
该模块不是自带的模块需要提前下载
pip3 install requests
# 如果你下载的模块想指定版本 需要在模块名的后面加两个等号
# pip3 install django== 1.11.11
基本使用
import requests
# requests.get() # 朝服务端发送get请求
# requests.post() # 朝服务端发送post请求 # res=requests.get("https://cn.bing.com/")
# res.encoding=‘utf-8‘ # 修改编码
# print(res.text) # 获取页面HTML代码
# with open(r‘获取页面.html‘,‘w‘,encoding=‘utf-8‘)
as f:
# f.write(res.text)
加请求头
headers
加携带的参数
params
如果涉及到转码需要模块
from urllib.parse import urlencode
res1 = urlencode(params,encoding=‘utf-8‘)
print(res1)
wd=%E7%BE%8E%E5%A5%B3
简单的防爬措施
1.校验当前请求者是否是一个浏览器
USER-Agent:Mozilla/5.0(windows NT 10.0;WOW64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36 # 标识浏览器
请求来了之后我们会先取请求头里面查看是否有携带user-Agent参数,如果携带了说明是一个浏览器如过没携带说明你是一个程序
2.校验你当前的请求是否是本网站发出的
Referer:https://www.lagou.com/ # 从哪儿来
请求来了之后会去请求头中校验referer判断后面的网址是否输入我们的网址的
如果不是也不会拒绝
图片防盗链
cookie与session
HTTP协议
四大特性
1.基于TCP/IP作用于应用层之上的协议
2.基于请求响应
3.无状态
4.无连接
无状态
不保存用户状态,所有的用户无论来多少次对于服务端来说都是初见
针对无状态的特点我们需要找到一种可以记录客户端状态的方法
cookie
保存在客户端浏览器上面的键值对
就拿登录功能举例
当你第一次输入了用户名和密码之后
我的服务端会给你返回一个随机字符串
你保存在浏览器上
之后再访问服务端的时候你把这个随机字符串带给我
我来校验这个字符串跟我之前给你这个用户的是否
username jason
password 123
session
保存在服务端上面的键值对
给客户端一个随机的字符串
参考博客网址:
https://www.cnblogs.com/Dominic-Ji/p/10886902.html