如何半个小时做出一个《新型冠状病毒同程查询》

╄→尐↘猪︶ㄣ 提交于 2020-02-21 07:10:24

很开心在昨天做出了《新型冠状病毒同程查询》这个工具,一方面给过年不能出门闲的发慌的自己找了些事情干,另一方面也帮助到了许多人,今天来扒一扒我到底做了些啥。(其实写教程比写网站还要花时间=_=,不过很庆幸过年回来还背了一个笔记本,不然早就疯了)

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个小时是解决了一大堆杂七杂八的问题。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!