首页 > 其他分享 >爬虫学习3

爬虫学习3

时间:2024-10-30 18:47:25浏览次数:7  
标签:get flask request 爬虫 urllib 学习 post data

目录

POST方法向网站发送数据

1、客户端post发送数据

2、服务器获取post的数据

3、get和post的混合使用


访问网站的方法有get方法和post方法,今天学习了另一种方法post方法。

POST方法向网站发送数据

1、客户端post发送数据

post方法访问网站时客户端向服务器发送表单数据,表单数据的组织方式与get方式的参数列表十分相似,数据采用"名称1=值1&名称2=值2......"的方式,多个数据之间用"&"符号隔开。如果参数值包含汉字,那我们就必须使用urllib.parse.quote对参数进行编码。

post方法与get方法最大的不同是get的参数放在地址栏的后面,而post的数据放在urlopen函数的data参数中,而且这个参数值必须是二进制数据。把data字符串按utf-8的编码转为二进制数据用data=data.encode()。

编写客户端client.py

import urllib.request
import urllib.parse
url="http://127.0.0.1:5000"
p=urllib.parse.quote("湖南")
c=urllib.parse.quote("长沙")
n=urllib.parse.quote("大家来长沙玩呀")
data="province="+p+"&city="+c+"&note="+n
resp=urllib.request.urlopen(url+"?",data=data.encode())
data=resp.read()
html=data.decode()
print(html)

2、服务器获取post的数据

服务器用flask中的request对象的form来存储get的参数,用get方法来获取参数。

这里要在路由加上methods=["POST"],如果没有加上,会默认只接受get请求。

编写服务器server.py

import flask
app=flask. Flask(__name__)
@app.route("/",methods=["POST"])
def index():
    p=flask.request.form.get("province")
    c=flask.request.form.get("city")
    n=flask.request.form.get("note")
    print(p)
    print(c)
    print(n)
    return p+"\n"+c+"\n"+n
app.run()

先运行server.py再运行client.py,可以看到两边的结果分别为  

3、get和post的混合使用

在应用中客户端客户同时使用get和post向服务器发送数据,一般get的数据放在地址栏后面,参数简单,数据量少,而post的数据是表单数据,数据量大。

编写客户端client.py

import urllib.request
import urllib.parse
url="http://127.0.0.1:5000"
p=urllib.parse.quote("湖南")
c=urllib.parse.quote("长沙")
n=urllib.parse.quote("长沙市地势起伏较大,地形以山地、岗地、平原为主,湘江穿市区而过。长沙市属亚热带季风气候,四季分明,春温变化大,夏初雨水多,伏秋高温久,冬季严寒少。")
pc="province="+p+"&city="+c
data="note="+n
resp=urllib.request.urlopen(url+"?"+pc,data=data.encode())
data=resp.read()
html=data.decode()
print(html)

编写服务器server.py

import flask
app=flask. Flask(__name__)
@app.route("/",methods=["GET","POST"])
def index():
    p=flask.request.values.get("province")
    c=flask.request.values.get("city")
    n=flask.request.form.get("note")
    print(p)
    print(c)
    print(n)
    return p+"\n"+c+"\n"+n
app.run()

 先运行服务器server.py再运行客户端client.py,得到以下结果

 

标签:get,flask,request,爬虫,urllib,学习,post,data
From: https://blog.csdn.net/2301_81172725/article/details/143359453

相关文章

  • 冒泡排序的学习与使用
    一.什么是冒泡数列?1.冒泡数列就是元素按ASCII码值从小到大排序的数列,由于很像水中泡泡向上冒出的形态,所以叫冒泡数列,如图:        二.如何将一个数列转换成冒泡数列?     答:使用冒泡排序即可将一个乱序的数列转换成冒泡数列。    冒泡排序即按ASCI......
  • qsort函数的学习与使用
    零.导言    在之前的文章中,我介绍了冒泡排序,即按ASCII码值把元素从小到大排序(文章链接我放在了第五部分,有兴趣的小伙伴可以求看看)。而今天我将继续介绍qsort函数,这个函数可以起到和冒泡排序一样的作用,并且有着更加广泛的应用场景。一.qsort函数的定义    qso......
  • 数据库中对触发器的学习
    触发器目录触发器什么是触发器触发器的操作创建触发器查看触发器删除触发器什么是触发器MySQL触发器(Trigger)是一种特殊类型的存储过程,它会在指定的数据库表上执行INSERT、UPDATE或DELETE等DML(数据操纵语言)操作之前或之后自动执行。触发器可以用来实现数据的复杂完整性约束、维......
  • OpenCV与AI深度学习 | 实战 | YOLO11自定义数据集训练实现缺陷检测 (标注+训练+预测
    本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。原文链接:实战|YOLO11自定义数据集训练实现缺陷检测(标注+训练+预测保姆级教程)导 读   本文将手把手教你用YOLO11训练自己的数据集并实现缺陷检测。安装环境YOLO11的介绍和使用这里不再赘......
  • 学习使用IDA
    学习使用IDA文章目录学习使用IDA使用步骤一.查壳二.使用IDAPro(64-bit)或IDAPro(32-bit)打开.exe文件三.按shift+F12,进入下图界面,找到flag,双击四.进入下图界面,点击flag,按ctrl+x,会出现弹窗,点OK五.进入以下界面,点Tab六.进入以下界面,分析代码得到flag(很大几率需要进行动......
  • (30-6)基于NLP用户舆情的交易策略:使用增加嵌入维度的深度学习模型
    30.5.4 使用增加嵌入维度的深度学习模型还有继续提升模型性能的空间,特别是因为我们拥有一个相对较大的数据集,并且数据是由专家进行标注的。嵌入层似乎是构建优秀模型的关键,因此我们将尝试一种使用嵌入层的深度学习方法。我们的深度学习模型将使用20,000的词汇表,并将最大文......
  • 蓝桥杯备赛&学习计划 2024.11—2025.4
    学习计划概览2024年11月到12月-巩固基础,学习基本算法。2025年1月到2月-学习中级算法和数据结构。2025年3月-进阶算法学习和刷题练习。2025年4月-复习重点知识,专注于比赛准备。详细周计划2024年11月:基础知识&基础算法第1-2周:复习基本控制结构(循环、条件语......
  • Lyndon 理论学习笔记
    字符串,太深刻了/kk定义下标从1开始。\(+\)是字符串拼接。\(|s|\)表示\(s\)的长度。\(s_i\)表示\(s\)的第\(i\)个字符。\(s^k\)表示\(k\)个\(s\)拼接的结果。字符串间的大小关系用字典序比较。Lyndon串字符串\(s\)是Lyndon串当且仅当\(s\)小于其......
  • [Python学习日记-58] 开发基础练习1——员工信息查询
    [Python学习日记-58]开发基础练习1——员工信息查询简介题目答案简介        该练习结合了函数和一些常用的模块开发了一个使用命令行交互的员工信息查询程序,可以巩固实践之前学习的内容。题目一、程序需求        现要求你写⼀个简单的员⼯信息增删......
  • CNN+迁移学习=中科院2区Idea!可以直接抄!
    2024深度学习发论文&模型涨点之——CNN+迁移学习CNN(卷积神经网络)是一种深度学习模型,广泛应用于图像识别、计算机视觉等领域。它通过局部连接和权值共享的机制,有效地捕捉图像中的特征,例如边缘、纹理等。迁移学习是一种机器学习技术,它允许一个预训练的模型被调整并应用于一个不......