python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)

  

下面我会给出关于“python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)”的完整攻略,包含以下部分:

  1. 准备工作
  2. 安装必要的Python库
  3. 编写爬虫代码
  4. 制作地图
  5. 部署到云服务器
  6. 定时爬取丁香园的新型冠状病毒数据

其中,2-6部分为攻略的主要内容,下面我将详细讲解每一部分。

1. 准备工作

在开始操作之前,我们需要先进行准备工作。首先是安装Chrome浏览器,然后下载ChromeDriver,版本要与Chrome浏览器版本匹配;其次是申请高德地图的开发者账号,获取高德地图的API Key。

2. 安装必要的Python库

本文采用的是Python3.7,安装必要的Python库包括selenium、pandas、numpy、matplotlib和pillow,可以使用pip安装:

pip install selenium pandas numpy matplotlib pillow

3. 编写爬虫代码

以下是编写爬虫代码的示例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
import pandas as pd

# 设置Chrome浏览器的无头模式,并打开丁香园疫情数据页面
chrome_options = Options()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=chrome_options)
wait = WebDriverWait(browser, 10)
browser.get('https://ncov.dxy.cn/ncovh5/view/pneumonia')

# 获取网页数据
browser.switch_to.frame('area')
data = browser.page_source
dfs = pd.read_html(data) # 解析网页数据

# 保存数据到CSV文件
df = dfs[1]
df.to_csv('data.csv', index=False, encoding='utf-8')

以上代码实现了使用selenium模拟浏览器打开丁香园疫情数据页面,并使用pandas解析网页数据,然后将数据保存到CSV文件中。

4. 制作地图

使用pandas和numpy处理数据,使用matplotlib绘制地图,使用pillow添加文本,以下是示例代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont

data = pd.read_csv('data.csv') # 读取CSV文件

# 统计每个省份的确诊人数
province = data.groupby('省份')['确诊'].sum().reset_index()

# 读取中国地图的图片,绘制地图
img = Image.open('china.png')
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('simsun.ttc', 14)

for idx, row in province.iterrows():
    text = row['省份'] + ':' + str(row['确诊']) # 拼接文本
    x, y = np.array(row[['x','y']]) * [img.width, img.height] # 计算坐标位置
    draw.text((x, y), text, (255,0,0), font=font) # 添加文本

plt.imshow(img)
plt.axis('off')
plt.show()

以上代码实现了将CSV文件中的数据绘制到一张中国地图上,并添加文本,然后显示地图。

5. 部署到云服务器

将爬虫代码和制作地图的代码上传到云服务器,并运行即可。确保云服务器上已经安装好所需的Python库。

6. 定时爬取丁香园的新型冠状病毒数据

使用Linux定时任务的crontab命令实现:

0 12 * * * cd /path/to/project && python scraper.py && python plot_map.py

以上命令表示每天的中午12:00定时运行scraper.py和plot_map.py两个Python脚本,其中路径需要替换为实际的项目路径。

这样就可以实现定时爬取丁香园的新型冠状病毒数据并制作出类似的地图,并部署到云服务器上。

相关文章