自测新型冠状病毒怎么拿证明?如何半个小时做出一个新型冠状病毒同程查询
自测新型冠状病毒怎么拿证明?如何半个小时做出一个新型冠状病毒同程查询import urllib.request# -*- coding: utf-8 -*-2仿写第一步,爬数据其实说来惭愧,根本不是爬数据,因为总共就200多条数据,接口也是放开的。爬数据只要用Python就可以了,在自己的电脑上装一个python3(更多时候可能需要用到多环境,我个人在用anaconda,一个管理Python环境和包依赖的工具) 然后用下面6行代码就取到了数据并打印了出来#!/usr/bin/python
很开心在昨天做出了《新型冠状病毒同程查询》这个工具,一方面给过年不能出门闲的发慌的自己找了些事情干,另一方面也帮助到了许多人,今天来扒一扒我到底做了些啥。(其实写教程比写网站还要花时间=_=,不过很庆幸过年回来还背了一个笔记本,不然早就疯了)
1原站
感谢原网站,在微信传播的很广泛,我做的就是仿写的这个网站,扒了一些数据,参考了一些代码。我就假设各位对啥都不懂哈,从最基本的讲一讲。 原站点基于纯静态的网站,只有html js就可以搞定。想要查看源代码,只需要在浏览器中点击鼠标右键->查看网页源代码 即可。通过源码就可以看出使用的前端样式框架是layui,表格直接就是layui的数据表格。不得不夸赞一下layui,数据表格的功能挺全的,分页也都是封装好的。
通过按F12,我们可以查看更多信息,切换到Network的选项卡,然后刷新页面,我们可以看到发送的请求。如图所示的是最终请求数据的那个http get请求,可见一开始数据是以静态的方式放在阿里云的对象存储了,后面重写的v1.2版本是更换了后端。
2仿写第一步,爬数据
其实说来惭愧,根本不是爬数据,因为总共就200多条数据,接口也是放开的。爬数据只要用Python就可以了,在自己的电脑上装一个python3(更多时候可能需要用到多环境,我个人在用anaconda,一个管理Python环境和包依赖的工具) 然后用下面6行代码就取到了数据并打印了出来
#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib.request
import json
# url = 'https://ncov2019.oss-cn-beijing.aliyuncs.com/cache?0.5397362967895694'
url = 'http://2019ncov.nosugartech.com/data.json'
f = urllib.request.urlopen(url)
res = json.loads(f.read())
print(res)
复制代码
3 仿写第二步,做个后端
原站一开始用对象存储的做法很不错哈,简单省事效率高,还有缓存机制可用。不过出于要做点不同的东西的原则,我用了bmob这个BaaS(backend as a service)服务作为后端( 感兴趣可以注册,推荐码$VS1)。非广告,还可以选择LeanCloud等。
我这边只用到了云存储的功能,登录进去建一张表,然后开始插入数据。插入数据也还是用python,具体可参考bmob的文档。步骤是引入一个python文件,里面是封装好的函数。然后遍历爬下来的数据一条一条进行插入。代码如下
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json urllib
from urllib.parse import urlencode
import urllib.request
from bmob import *
def main():
#配置您申请的APPKey
appkey = "xxxxxxxxxxxxxxxxxxxxx"
#新闻头条
# url = 'https://ncov2019.oss-cn-beijing.aliyuncs.com/cache?0.5397362967895694'
url = 'http://2019ncov.nosugartech.com/data.json'
f = urllib.request.urlopen(url)
res = json.loads(f.read())
print(res)
#遍历,然后插入bmob
for item in res['data']:
print (item)
insert_to_bmob(item)
# 向bmob写入数据
def insert_to_bmob(data):
#b = Bmob("appid" "restkey")
b = Bmob("0d7986aeaa130418420d77e8457679b5" "87727c86dcb3f297f568ddf760e19c8a")
print(
b.insert(
'ncov_db' # 表名
data
).jsonData # 输出json格式的内容
)
if __name__ == '__main__':
main()
今天就先写到这把,这块其实半个钟就能搞定,上面写的4个小时是解决了一大堆杂七杂八的问题。
今天给大家的分享就到这吧!有收获,需要JAVA面试资料或者基础资料都可以关注小编同时转发此文章后再私聊小编回复【java】从里面获取2020年java架构师进阶学习资料和BAT面试题。大家一起交流成长!