Skip to main content
 首页 » 编程设计

python之需要用python写一个简单的表单数据采集工具供本地使用

2025年05月04日14emanlee

我需要编写一个简单 python 应用程序来通过表单收集数据。表单本身只需要

  • 几个用于姓名和地址的文本字段,
  • 一个日期字段
  • 和一个选择框/下拉字段。

应用程序将在本地运行,数据应保存在本地的纯 csv 文件中。无需联网。

我发现有很多不同的方法可以解决这个问题:

  • 命令行应用程序,
  • 带有 tkinter/qt 的 gui 应用程序,
  • 像 flask 或瓶子这样的微框架,
  • 像 django 这样的大型框架。

当然肯定有一些方法我还没有找到。主要关注点是简单性,我需要一个指向正确方向的指针:我如何实现这一点,以便即使是没有经验的开发人员以后也可以添加或更改字段?

请您参考如下方法:

我能想到的最简单的形式将它保存为桌面上的 index.html 然后在浏览器中打开它:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<form id="myfirstform" name='hello'> 
    <div> 
        <label for="name">Name:</label> 
        <input type="text" id="name" name="user_name" /> 
    </div> 
    <div> 
        <label for="mail">E-mail:</label> 
        <input type="email" id="mail" name="user_mail" /> 
    </div> 
    <div> 
        <label for="msg">Message:</label> 
        <textarea id="msg" name="user_message"></textarea> 
    </div> 
    <div> 
    <select id="some_dropdown1" name="some_dropdown"> 
        <option value="" disabled="disabled" selected="selected" >Please select a name</option> 
        <option value="1">One</option> 
        <option value="2">Two</option> 
    </select> 
    </div> 
</form> 
 
<input type='button' value='Submit form' onclick='submitDetailsForm()' /> 
 
<script> 
    function submitDetailsForm() { 
      var f = $("#myfirstform").serialize(); 
      fetch('http://localhost:8080/?'+ f) 
        .then(r=> r.json()) 
        .then(j=> { 
            console.log(j) 
        }) 
    } 
</script> 

然后服务器将其保存为server.py并运行python server.py:

from http.server import BaseHTTPRequestHandler, HTTPServer 
import urlparse, json 
 
# python2 
# from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer 
 
 
class HandleRequests(BaseHTTPRequestHandler): 
    def _set_headers(self): 
        self.send_response(200) 
        self.send_header('Content-type', 'application/json') 
        # this line is important to understand for CORS 
        self.send_header('Access-Control-Allow-Origin', '*') 
        self.end_headers() 
 
    def do_GET(self): 
        self._set_headers() 
        query_parms = urlparse.urlparse(self.path).query 
        parsed = urlparse.parse_qs(query_parms) 
        parsed['server_message'] = 'we gottem' 
        self.wfile.write(json.dumps(parsed)) 
 
host = 'localhost' 
port = 8080 
HTTPServer((host, port), HandleRequests).serve_forever() 

恕我直言,这很简单,一个 python 内置函数和 jquery,它基本上是一个 internet 内置函数。

服务器响应的输入用法示例:

服务器输出示例:

对于更高级的用法,请考虑:

    def do_POST(self): 
        # Doesn't do anything with posted data 
        self._set_headers() 
        content_len = int(self.headers.getheader('content-length', 0)) 
        post_body = self.rfile.read(content_len) 
        self.wfile.write("received post request:<br>{}".format(post_body)) 
 
    def do_PUT(self): 
        self.do_POST() 

我离开弄清楚如何写入 csv/tsv 文件。

弄清楚如何编写一个基本的路由器,它允许您创建将数据发送回您的页面的端点,以便您可以填充下拉菜单。

do_GET 中的一些if/else 语句应该足够了。

一旦您达到限制并开始学习如何制作意大利面,我希望以此为起点,然后开始使用 flask 或类似 cherrypy 的工具。

祝你好运