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脚本,其中路径需要替换为实际的项目路径。

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

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器) - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Python中类似于jquery的pyquery库用法分析

    Python中类似于jQuery的pyquery库用法分析 在Python中,我们可以使用pyquery库来解析HTML和XML文档,类似于jQuery库在JavaScript中的作用。本文将详细介绍pyquery库的用法,并提供两个示例。 安装pyquery库 在开始之前,我们需要先安装pyquery库。可以使用pip命令来安装: pip install …

    python 2023年5月15日
    00
  • python 实现字符串下标的输出功能

    实现字符串下标的输出功能,可以通过 Python 中的下标索引来完成。下面是实现过程的详细攻略: 第一步:字符串定义 首先,我们需要先定义一个字符串,例如: string = "Hello, World!" 第二步:输出单个字符 要输出单个字符,我们只需要使用字符串的下标索引来获取对应位置的字符。Python 中的下标从 0 开始计算,例…

    python 2023年6月5日
    00
  • python 实现倒排索引的方法

    下面是 “Python 实现倒排索引的方法” 的完整攻略: 什么是倒排索引 倒排索引(Inverted Index)是一种常用于全文搜索引擎的数据结构。它是一个字符串到文档列表的映射,也就是说,对于一个包含了若干文本的文档集合,我们可以建立一个由每个单词(或者字符)指向包含它的文档列表的索引。 倒排索引可以使检索速度更快,因为我们可以先对查询进行处理,然后只…

    python 2023年6月5日
    00
  • Python 3 中 execfile 的替代方案? [复制]

    【问题标题】:Alternative to execfile in Python 3? [duplicate]Python 3 中 execfile 的替代方案? [复制] 【发布时间】:2023-04-05 08:03:01 【问题描述】: Python 2 有内置函数 execfile,它在 Python 3.0 中被删除。 This question …

    Python开发 2023年4月5日
    00
  • Python 列表约定列表

    【问题标题】:Python list of lists conventionPython 列表约定列表 【发布时间】:2023-04-03 16:17:01 【问题描述】: 我有一个类似下面的列表(y)。现在,我想做的是删除对象[n,m]。如果n 匹配某个值。我因此思考列表列表(m 将在运行时多次更改,而n 是静态的)是否是解决此问题的方法?如果有更清洁的方…

    Python开发 2023年4月8日
    00
  • Python下调用Linux的Shell命令的方法

    当我们在Python中需要执行一些系统级的任务,比如创建、删除、移动、查找文件或文件夹,或者直接调用Linux下的Shell命令实现一些特殊的功能时,我们可以使用Python的subprocess模块来实现。下面就是Python下调用Linux的Shell命令的方法的完整攻略: 确定要执行的Shell命令 首先,我们要明确要调用的Shell命令。可以通过在L…

    python 2023年6月2日
    00
  • R语言绘图公式与变量对象混合拼接实现方法

    接下来我将详细讲解R语言绘图公式与变量对象混合拼接实现方法的完整攻略。 1. 简介 在R语言中,我们可以使用各种绘图函数来进行数据可视化,同时,我们也可以使用变量对象来传递数据和参数。在实际应用中,有时候我们需要同时将变量对象和绘图公式结合拼接,以便更灵活地生成绘图结果。接下来将介绍三种实现方法。 2. 使用paste0函数拼接 paste0函数可以将多个字…

    python 2023年5月18日
    00
  • python解析json串与正则匹配对比方法

    以下是“Python解析JSON串与正则匹配对比方法”的完整攻略: 一、问题描述 在Python中,我们经常需要解析JSON串或使用正则表达式进行匹配。本文将详细讲解Python解析JSON串与正则匹配的对比方法,以及如何在实际开发中选择合适的方法。 二、解决方案 2.1 Python解析JSON串 在Python中,我们可以使用json模块来解析JSON串…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部