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. 收藏 | 图解Transformer:Attention Is All You Need
  2. STE:华南农大曾振灵/熊文广-猪粪介导抗生素耐药基因向农场工人和周边环境传播...
  3. java消息服务,JMS 和 ActiveMQ
  4. Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件...
  5. 测验6: 组合数据类型 (第6周)
  6. 计算机组成原理随笔(一)
  7. 阿里云的这个智能编码插件真心好用!Java 开发神器!!!
  8. 【UnityDragonBones】纸娃娃(一)替换身体部位图片
  9. 这 26个 Python 技巧,你肯定还不知道!
  10. 2021年浙大考研计算机专业录取分数线,浙江大学2021年计算机考研拟录取数据分析...
  11. git入职第一天快速使用指南
  12. js删除数组指定的某个值或元素
  13. XUPT 寒假算法集训第三周
  14. CISP注册信息安全工程师证书及展示
  15. 道一云OA系统排名?道一云OA办公系统怎么选?什么是用户口碑最好的道一云OA系统?
  16. 什么击计算机窗口可以打开资源管理器,如何打开资源管理器? 5种打开资源管理器的方法...
  17. Nat. Commun.| 机器学习对可突变的治疗性抗体的亲和力和特异性进行共同优化
  18. 大数据技术在电商的应用
  19. switch语句实现周一到周五输出weekday;周六周天weekend C语言
  20. 解开机器学习模型黑盒的 4 种方法(终极指南)

热门文章

  1. EXCEL数据处理小结(SQL)
  2. 通过改变浏览器Cookie切换当前网站马甲
  3. Python自学记录--steam密码加密逆向
  4. oracle plsql 命令,Oracle PlSQL常用命令
  5. 8uftp官网网址,8uftp官网网址及5大软件特色
  6. 阿里巴巴 Java 性能调优手册
  7. 查看svn服务器上的文件,如何在命令行通过SVN命令筛选出修改过的文件并递交
  8. jsonrpc php使用,基于php的json rpc原理及应用
  9. eclipse导入html页面乱码,Eclipse导入项目乱码问题(中文乱码)
  10. MATLAB使用教程(一)——从零开始,基础,数据类型——新手来看