今日内容概要

  • 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

最新文章

  1. background-size
  2. 一键批量添加材质的法线贴图-unity插件
  3. C# Out,Ref 学习总结
  4. asp.net web api集成微信服务(使用Senparc微信SDK)
  5. ASP.NET MVC 4源码分析之如何定位控制器
  6. [iOS基础控件 - 3.3] 图片浏览器
  7. css中判断IE版本的语句
  8. C# Socket select模型
  9. IOS应用程序生命周期详解
  10. 深入浅出SOA
  11. NFA的实现
  12. ssh: connect to host master port 22: Connection refused
  13. 在Linux上的虚拟机上启动Oracle上报ORA-00845: MEMORY_TARGET not supported on this system的问题解决
  14. node 全局对象global —— 记录在线人员
  15. 图像识别与OpenCV——Mat类与Mat_类的内存管理
  16. [Swift]LeetCode266.回文全排列 $ Palindrome Permutation
  17. ansible自动化运维详细教程及playbook详解
  18. 键盘按键js效果
  19. Android 5.0 Phone初始化分析
  20. GitHub下的文件放到Linux系统下

热门文章

  1. linux系统别名
  2. 学习Java第17天
  3. mac 下载MySQL后,需要这样打开
  4. 深入聊一下const关键字
  5. 后缀自动机 (SAM)
  6. APP一般使用哪种Activity启动模式【转】
  7. java命令- (学习)jps
  8. 导出SQL语句
  9. [转]有关ListIterator接口的add与remove方法探究
  10. Java注解和注解处理器使用方法