1.先编写一个socket服务端模拟web前端,并发布json数据:

import socket
server=socket.socket()
ip_port=('127.0.0.1',8005)
server.bind(ip_port)server.listen()while 1:conn,addr = server.accept()while 1:try:from_client_msg = conn.recv(1024).decode('utf-8')print("来自客户端的消息",from_client_msg)message = b'HTTP/1.1 200 ok\r\n\r\n'conn.send(message)with open('2.html','r',encoding='utf-8') as f:data = f.read()conn.send(data.encode('utf-8'))conn.close()except Exception:break

2.html文件写入实现准备好的json,当然只是模拟,真正是从数据库读取的数据生成json文件:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
{"code":200,"data":[{"datatime":"2022-01-01 20:00:00","uploadtime":"2022-01-01 20:25:05","value_2473":37,"value_2481":-77.8,"value_2483":0.9,"value_2484":26,"value_4402":0.009,"value_4404":0.8,"value_4405":0.012,"value_4406":-99,"value_4407":-99,"value_4467":0.059,"value_4468":0.071,"value_4471":0.016,"value_4D71":0.022,"value_4472":-99,"value_4474":-99,"value_4482":1017.4,"value_4485":-99,"value_4486":0.101,"value_4487":-99,"value_4488":-99,"value_4489":-99,"value_448A":0.053,"value_448B":-99,"status_2473":0,"status_2481":0,"status_2483":0,"status_2484":0,"status_4402":0,"status_4404":0,"status_4405":0,"status_4406":5,"status_4407":5,"status_4467":0,"status_4468":0,"status_4471":0,"status_4D71":0,"status_4472":5,"status_4474":5,"status_4482":0,"status_4485":5,"status_4486":0,"status_4487":5,"status_4488":5,"status_4489":5,"status_448A":0,"status_448B":5,"level":2,"levelName":"良","typeName":"二级","primaryPollutant":"PM10","overlimitPollutant":"","iaqi_4402":3,"iaqi_4404":8,"iaqi_4467":30,"iaqi_4471":5,"iaqi_4D71":-99,"iaqi_4486":76,"iaqi_448A":73,"aqi":76,"code":130100,"name":"石家庄市","cityname":"石家庄市","provinceName":"河北省"}],"message":"OK"}
</body>
</html>

前台访问一下:

编写获取json程序:

import requests
from lxml import etreeurl = 'http://127.0.0.1:8005/'response = requests.get(url)
response.encoding = 'utf-8'page_text = response.text
text = etree.HTML(page_text)
div_list = text.xpath('/html/body/text()')
print(div_list[0].strip())

如下:

这样获取到的是一个json的类型,需要把它转换成python对象类型;并且加入我需要获取里面的datatime、uploadtime、name这三个字段的数据,改进上面的代码:

import requests
from lxml import etree
import jsondef get_data():url = 'http://127.0.0.1:8005/'response = requests.get(url)response.encoding = 'utf-8'page_text = response.texttext = etree.HTML(page_text)div_list = text.xpath('/html/body/text()')msg = div_list[0].strip()msg_json = json.loads(msg)   #loads直接转换成python对象code = msg_json["code"]if code == 200:data = msg_json['data']   #获取数据列表datatime= data[0]['datatime']uploadtime = data[0]['uploadtime']name = data[0]['name']else:with open('./data_error.log','a',encoding='utf-8') as f:f.write(f"数据获取错误,状态码为{code}\n")if __name__ == '__main__':get_data()

数据入库:

def put_data(data):db = pymysql.connect(host = '192.168.247.100',port = 3306,user = 'root',password = '123457',database = 'test',charset = 'utf8')_values = ((data[0]['datatime'],data[0]['uploadtime'],data[0]['name']))cursor = db.cursor()# 建表语句# sql = "create table json_data(id int primary key AUTO_INCREMENT,data datetime,uptime datetime,cityname varchar(20))"insert_sql = "insert into json_data(data,uptime,cityname) values(%s,%s,%s)"cursor.execute(insert_sql,_values)db.commit()cursor.close()

可以将采集和入库的两个函数写到一个程序文件中,一下是总的:

import requests
from lxml import etree
import json
import pymysqldef get_data():  #采集函数url = 'http://127.0.0.1:8005/'response = requests.get(url)response.encoding = 'utf-8'page_text = response.texttext = etree.HTML(page_text)div_list = text.xpath('/html/body/text()')msg = div_list[0].strip()msg_json = json.loads(msg)   #loads直接转换成jsoncode = msg_json["code"]if code == 200:data = msg_json['data']   #获取数据列表datatime= data[0]['datatime']uploadtime = data[0]['uploadtime']name = data[0]['name']return dataelse:with open('./data_error.log','a',encoding='utf-8') as f:f.write(f"数据获取错误,状态码为{code}\n")def put_data(data):  #入库函数db = pymysql.connect(host = '192.168.247.100',port = 3306,user = 'root',password = '123457',database = 'test',charset = 'utf8')_values = ((data[0]['datatime'],data[0]['uploadtime'],data[0]['name']))cursor = db.cursor()# 建表语句# sql = "create table json_data(id int primary key AUTO_INCREMENT,data datetime,uptime datetime,cityname varchar(20))"insert_sql = "insert into json_data(data,uptime,cityname) values(%s,%s,%s)"cursor.execute(insert_sql,_values)db.commit()cursor.close()if __name__ == '__main__':d = get_data()put_data(d)

最后看数据库成功接收到数据:

没有问题,这就完成了一个从前端web socket到后端数据入库的过程。

前后端python简单模拟api接口返回json,以及采集数据相关推荐

  1. 基于“新浪乐库”的音乐搜索API接口,返回JSON数据

    新浪开发平台提供的API接口非常丰富,可没有音乐搜索的接口,对于我们这些搞基于微博应用的孩子还是比较悲剧的. 于是我可爱的好基友@ACMer_耕畅写了一段代码,把"新浪乐库"返回的 ...

  2. python实现简单的api接口-对Python实现简单的API接口实例讲解

    get方法 代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server impor ...

  3. 简单python脚本实例-对Python实现简单的API接口实例讲解

    get方法 代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server impor ...

  4. 前后端分离简单项目--蚂蚁博客--后端部分

    原文网址:前后端分离简单项目--蚂蚁博客--后端部分_IT利刃出鞘的博客-CSDN博客 简介 说明         本文介绍我从0开发的前后端分离的简单项目--蚂蚁博客.本博文介绍后端部分. 本项目是 ...

  5. 使用Node.js写一个简单的api接口

    引入Http模块 默认你已经安装了Node.js Node当中内置了Http模块: 可以使用 var http= require("http"); 复制代码 引入http模块: H ...

  6. Django的前后端分离以及Rest风格接口开发大全

    1.什么是前后端分离开发: 就是前后端工程师约定好数据交互接口,并行的进行开发和测试,后端只提供数据,不负责将数据渲染到页面上,前端通过HTTP请求获取数据并负责将数据渲染到页面上,这个工作是交给浏览 ...

  7. 前后端分离简单项目--蚂蚁博客--简介

    原文网址:前后端分离简单项目--蚂蚁博客--简介_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍我从0开发的前后端分离的简单项目--蚂蚁博客. 本项目是一个全栈项目,使用主流.前沿的技术栈开发 ...

  8. 入门,前后端实现简单账号密码登录

    前后端实现简单账号密码登录 涉及知识点 原理 效果图 前端代码 index.html res.html login.html main.js info.html error.html WZ.html ...

  9. 用Python简单模拟《原神》抽卡系统

    用Python简单模拟<原神>抽卡系统[抽卡模拟器] 简介 代码思想 保底机制 概率 概率公式 代码构建 导入软件包random和os 初始化概率 增加概率 保底机制 创建文件夹 抽卡次数 ...

  10. SpringSecurity - 前后端分离简单实战 - 环境准备

    SpringSecurity 学习指南大全 文章目录 SpringSecurity - 前后端分离简单实战 - 环境准备 最好的理解方法 环境准备 技术前提 项目架构 项目创建 项目配置 数据库配置 ...

最新文章

  1. Field types
  2. 居然还有人在用 System.out.println打日志的吗?
  3. 网上书店 整体需求分析
  4. vim 使用技巧 转载
  5. AngularJS:SQL
  6. 32.生命周期注释.rs
  7. Jmeter(二)Jmeter目录介绍
  8. java~springcloud微服务目录索引
  9. [轉]Flash/Flex监听浏览器的关闭事件
  10. java中sql之count_按SQL Server中的count()子句分组
  11. 地方商城门户网页模板-商城模板
  12. 【图数据库】Neo4j
  13. wordpress页面里可不可以写php,如何在WordPress页面中创建不同的可编辑部分?
  14. 【小工具】根据定义的白名单字段进行Bean的拷贝
  15. 视频课程:高等数学考研辅导讲座-上
  16. matlab编程求20的阶乘和,matlab编程求20的阶乘
  17. 翼次元空间:GoodUP.io与4WiN全球互贸链的基础=智协云店通+BitCOO
  18. (Java实现) 工作分配问题
  19. 软件测试缺陷报告总结
  20. 科创板发行上市审核44个问题解答汇编(总11期)

热门文章

  1. RF无线射频电路设计难点分析
  2. 【Java入门基础第6天】六款Java常用的开发工具 废话少说-上号
  3. 高级维修电工及技师技能实训考核装置QY-JSPX01
  4. c语言智能车跑道检测程序,智能小车的循迹方法与流程
  5. jsonrpc4j android,jsonrpc-4j代码解析
  6. 【Spark】Spark安装详解
  7. 基本的WEB渗透测试
  8. go语言[3]-数组
  9. git ssh密钥生成与配置
  10. 【Unity3D插件】Exploder插件分享《物体爆炸效果插件》