当前位置: 首页 > news >正文

程序代码篇---python获取http界面上按钮或者数据输入

在 Python 中获取 HTTP 界面上的按钮点击或数据输入,主要有两种场景:

  1. 作为客户端:模拟用户在网页上输入数据、点击按钮(比如爬虫自动提交表单)。
  2. 作为服务端:搭建一个网页服务,接收用户在浏览器中输入的数据和按钮点击(比如自己写一个简单的 Web 应用)。

下面分别用通俗易懂的方式讲解这两种场景的实现方法和代码。

一、作为客户端:模拟用户操作网页(自动输入和点击)

这种场景常用于自动化测试或数据爬取,需要模拟用户在网页上输入文本、点击提交按钮等操作。常用工具是 requests(处理 HTTP 请求)和 BeautifulSoup(解析网页结构)。

核心原理:

网页上的输入框(<input>)和按钮(<button>)通常放在表单(<form>)中。当用户点击按钮时,浏览器会把输入框中的数据按照表单指定的规则(如 URL、提交方式 GET/POST)发送给服务器。
我们要做的就是:

  1. 解析网页,找到表单的提交地址和输入框的名称(name属性)。
  2. 构造要输入的数据(比如输入框的值)。
  3. requests发送请求,模拟点击提交。
实例:自动登录一个简单的登录页面

假设网页上有一个登录表单,结构如下(简化版):

<form action="/login" method="post"><input type="text" name="username" placeholder="用户名">  <!-- 输入框name是username --><input type="password" name="password">  <!-- 输入框name是password --><button type="submit" name="submit_btn" value="login">登录</button>  <!-- 按钮name是submit_btn -->
</form>

我们需要模拟用户输入用户名和密码,然后点击 "登录" 按钮。

代码实现

import requests
from bs4 import BeautifulSoup# 1. 访问登录页面,获取表单信息(实际场景可能需要先获取页面cookie等)
login_url = "http://example.com/login_page"  # 登录页面的URL
response = requests.get(login_url)# 2. 解析网页,确认表单的提交地址(action)和输入框名称(这里简化,直接用已知地址)
# 实际场景可以用BeautifulSoup解析:
soup = BeautifulSoup(response.text, "html.parser")
form = soup.find("form")  # 找到表单
submit_url = form.get("action")  # 表单提交的地址(可能是相对路径,需要拼接)
if not submit_url.startswith("http"):submit_url = "http://example.com" + submit_url  # 拼接成完整URL# 3. 构造要输入的数据(对应输入框的name和值)
data = {"username": "myaccount",  # 用户名输入框的值"password": "mypassword",  # 密码输入框的值"submit_btn": "login"      # 按钮的value(点击按钮时会提交这个值)
}# 4. 发送POST请求,模拟点击登录按钮
response = requests.post(submit_url, data=data)# 5. 检查是否登录成功(根据返回内容判断)
if "登录成功" in response.text:print("登录成功!")
else:print("登录失败!")

代码解析

  • requests.get(login_url):先访问登录页面,获取页面内容(实际网站可能需要保存 cookie,这里简化处理)。
  • BeautifulSoup:解析网页,找到表单的提交地址(action属性),确保提交的 URL 正确。
  • data字典:键是输入框 / 按钮的name属性,值是要输入的内容(比如用户名、密码),这对应了用户在网页上的输入。
  • requests.post:模拟点击提交按钮,把数据发送给服务器,相当于用户点击了 "登录"。

二、作为服务端:接收用户在网页上的输入和点击

这种场景是自己搭建一个 Web 服务,用户在浏览器中输入数据、点击按钮后,服务端接收并处理这些数据。常用工具是 Flask(轻量级 Web 框架,适合入门)。

核心原理:
  1. 用 Flask 创建一个网页,包含输入框和按钮(表单)。
  2. 用户在浏览器中打开网页,输入数据并点击按钮。
  3. 浏览器将数据发送到 Flask 服务端,服务端通过代码获取这些数据并处理。
实例:搭建一个接收用户输入的简单网页

实现功能:用户在网页输入姓名和年龄,点击提交后,服务端显示用户输入的内容。

步骤 1:安装 Flask
首先需要安装 Flask 库:

pip install flask

步骤 2:编写服务端代码

from flask import Flask, render_template_string, request# 创建Flask应用
app = Flask(__name__)# 定义网页模板(包含输入框和按钮的表单)
html_template = """
<!DOCTYPE html>
<html>
<body><h1>请输入信息</h1><!-- 表单:提交到当前页面(/),用POST方式 --><form action="/" method="post">姓名:<input type="text" name="name"><br>  <!-- 输入框name是name -->年龄:<input type="number" name="age"><br>  <!-- 输入框name是age --><button type="submit" name="action" value="submit">提交</button>  <!-- 按钮name是action --></form>{% if result %}  <!-- 如果有结果,显示出来 --><h2>你输入的信息:</h2><p>姓名:{{ result.name }}</p><p>年龄:{{ result.age }}</p><p>按钮:{{ result.action }}</p>{% endif %}
</body>
</html>
"""# 定义首页路由(处理GET和POST请求)
@app.route('/', methods=['GET', 'POST'])
def index():result = Noneif request.method == 'POST':# 当用户点击提交按钮时(POST请求),获取输入的数据name = request.form.get('name')  # 获取name输入框的值age = request.form.get('age')    # 获取age输入框的值action = request.form.get('action')  # 获取按钮的值result = {'name': name,'age': age,'action': action}# 渲染网页模板,传入结果(如果有的话)return render_template_string(html_template, result=result)# 运行服务(端口5000)
if __name__ == '__main__':app.run(debug=True)

代码解析

  1. 网页模板

    • 表单的action="/"表示提交到当前页面,method="post"表示用 POST 方式发送数据。
    • 输入框的name="name"name="age"是关键,服务端通过这个name获取值。
    • 按钮的name="action"value="submit"表示点击后会提交action=submit
  2. 服务端处理

    • @app.route('/', methods=['GET', 'POST']):表示首页可以处理 GET(打开页面)和 POST(提交数据)请求。
    • request.method == 'POST':判断是否是用户点击按钮后的提交操作。
    • request.form.get('name'):通过输入框的name属性获取用户输入的值(比如姓名)。
    • 最后将结果传入模板,在网页上显示用户输入的内容。

运行效果

  1. 运行代码后,终端会显示 Running on http://127.0.0.1:5000/
  2. 打开浏览器访问该地址,会看到输入框和 "提交" 按钮。
  3. 输入姓名和年龄,点击提交,页面会显示你输入的信息。

三、两种场景的区别

场景目的核心工具关键操作
客户端模拟用户操作别人的网页requests构造数据,发送 POST/GET 请求
服务端搭建自己的网页接收用户操作Flask通过 request.form 获取表单数据

总结

  • 如果你想自动操作别人的网页(比如自动登录、提交表单),用requests构造数据并发送请求,关键是找到表单中输入框的name属性。
  • 如果你想自己搭建网页接收用户输入,用Flask框架,通过request.form获取用户输入的值,核心是在 HTML 中正确设置输入框的name

这两种方法都不需要直接 "点击" 按钮,而是通过处理表单数据来模拟或接收按钮点击的效果,因为网页按钮的本质就是触发数据提交。

http://www.lryc.cn/news/601227.html

相关文章:

  • LeetCode 611.有效三角形的个数
  • 机器学习项目一基于KNN算法的手写数字识别
  • 设计模式(十二)结构型:享元模式详解
  • AI Coding IDE 介绍:Cursor 的入门指南
  • 设计模式(八)结构型:桥接模式详解
  • 以太坊ETF流入量超越比特币 XBIT分析买币市场动态与最新价格
  • 分类预测 | MATLAB基于四种先进的优化策略改进蜣螂优化算法(IDBO)的SVM多分类预测
  • 机器学习—线性回归
  • 数学基础薄弱者的大数据技术学习路径指南
  • Java Ai (day01)
  • Oracle EBS 库存期间关闭状态“已关闭未汇总”处理
  • 【网络协议安全】任务15:DHCP与FTP服务全配置
  • docker与k8s的容器数据卷
  • S7-1500 与 S7-1200 存储区域保持性设置特点详解
  • 三、搭建springCloudAlibaba2021.1版本分布式微服务-springcloud loadbalancer负载均衡
  • Java 大视界 -- Java 大数据机器学习模型在电商客户细分与精准营销活动策划中的应用(367)
  • 机械学习----knn实战案例----手写数字图像识别
  • 人工智能开发框架 04.网络构建
  • spring gateway 配置http和websocket路由转发规则
  • Linux驱动21 --- FFMPEG 音频 API
  • Spring Boot + @RefreshScope:动态刷新配置的终极指南
  • mysql 快速上手
  • 发布 VS Code 扩展的流程:以颜色主题为例
  • 详解力扣高频SQL50题之1164. 指定日期的产品价格【中等】
  • MCP + LLM + Agent 8大架构:Agent能力、系统架构及技术实践
  • 2025年7月25日-7月26日 · AI 今日头条
  • 【测试报告】博客系统(Java+Selenium+Jmeter自动化测试)
  • Jmeter的元件使用介绍:(八)断言器详解
  • OpenResty 高并发揭秘:架构优势与 Linux 优化实践
  • 零基础学习性能测试第六章:性能难点-Jmeter实现海量用户压测