很开心在昨天做出了《新型冠状病毒同程查询》这个工具,一方面给过年不能出门闲的发慌的自己找了些事情干,另一方面也帮助到了许多人,今天来扒一扒我到底做了些啥。(其实写教程比写网站还要花时间=_=,不过很庆幸过年回来还背了一个笔记本,不然早就疯了)
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个小时是解决了一大堆杂七杂八的问题。
来源:CSDN
作者:JAVA高级编程
链接:https://blog.csdn.net/weixin_42784331/article/details/104418790