实时抓取网页数据(数据获取接下来的事情就好办了,需要注意日期格式化问题)

优采云 发布时间: 2021-11-03 03:07

  实时抓取网页数据(数据获取接下来的事情就好办了,需要注意日期格式化问题)

  实时流行病捕捉

  武汉肺炎期间,家里无事可做。有一天,我突然想知道每天的疫情数据。

  我以前玩过爬虫,但这次不一样了。准确地说,这次不是爬虫,因为它不具备“批量”的特性。

  分析网站

  首先要说明一点,我们没有政府数据库,数据来源是通过其他一些在线网站,实时更新数据,比如腾讯新闻、定香园等。

  接下来,我们使用腾讯新闻来抓取疫情数据。

  网址是#/

  打开之后,可以看到它有实时的疫情追踪。

  以前我用的爬虫是从html页面中获取相关内容,比较直接,因为所见即所得,只要到当前网页找到对应的标签就可以获取。

  这一次,和以前不一样了。这类似于股票。数据从后端不断发送。这个动态更新的网站更适合选择直接查找数据流(不是我在html中找不到对应标签的借口)。

  查找数据流量来源

  打开开发者工具,我仔细搜索了一下。

  我猜这种数据一定是json格式的。我首先在XHR中搜索,发现一堆带小数的数据。但让我们考虑一下。除了治愈率和死亡率,疫情数据的一般单位是人数。,怎么会有这么多小数?那不应该是这个数据。

  我把除了js、image、css之外的所有数据都打开了,没有发现。CSS都是排版样式,图片都是图片。用这种方式传输数据是不可能的,所以去js。

  功夫不负有心人,我在js中找到了一个jQuery,里面全是json数据!

  

  

  数据采集

  接下来的事情就简单了,我们也看到了也支持GET方法,访问这个url不需要其他数据。

  import requests

url = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_other"

ret = requests.get(url)

with open("data.json", "w") as f:

f.write(ret.text)

  数据处理

  Python 也非常擅长处理 json 对象。只需在此处编写 strToJson 方法即可。

  import json

f = open('data0204.json', 'r', encoding='utf-8')

data = json.load(f)['data'] # load json data from txt file

data = json.loads(data) # load json data from str class

data = data['chinaDayAddList']

import matplotlib.pyplot as plt

import numpy as np

from datetime import datetime

plt.clf()

days = [datetime.strptime('2020.' + d['date'], '%Y.%m.%d').date() for d in data]

plt.plot(days, [int(con['confirm']) for con in data], label='confirm')

plt.plot(days, [int(con['suspect']) for con in data], label='suspect')

plt.plot(days, [int(con['dead']) for con in data], label='dead')

plt.plot(days, [int(con['heal']) for con in data], label='heal')

plt.legend()

plt.show()

  需要注意日期格式问题!

  除了像我上面这样的处理,你还可以使用其他部分来做任何你想做的事!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线