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日

相关文章

  • Selenium Python 无法从亚马逊产品详细信息屏幕的下拉列表中选择值

    【问题标题】:Selenium Python not able to select value from drop down for Amazon product detail screenSelenium Python 无法从亚马逊产品详细信息屏幕的下拉列表中选择值 【发布时间】:2023-04-02 03:49:01 【问题描述】: 我正在尝试为亚马逊产…

    Python开发 2023年4月8日
    00
  • Python实现GUI学生信息管理系统

    Python实现GUI学生信息管理系统的完整攻略可以分为以下步骤: 准备工作 首先,我们需要安装Python环境。Python目前有两个主流版本,分别是Python2和Python3,在此我们以Python3为例。我们可以在官网上下载Python3的安装包并按照指导进行安装。 安装完成后,我们需要安装PyQt5这个GUI库,它可以使我们轻松地设计出窗口界面。…

    python 2023年5月30日
    00
  • 使用Python 文件读取的多种方式(四种方式)

    下面我将详细讲解使用Python文件读取的多种方式。 一、使用open()函数读取文件 Python的内置函数open()可以很方便地读取文件。open()函数有两个参数:文件名和打开模式。文件名可以是文件的绝对路径或相对路径,打开模式用于描述打开文件的方式。打开模式有三种:读模式(”r”),写模式(”w”)和追加模式(”a”)。 使用open()函数读取文…

    python 2023年5月13日
    00
  • python字符串操作的15种方法汇总

    以下是关于 Python 字符串操作的 15 种方法汇总的攻略: 问题描述 在 Python 中,字符串是一种常见的数据类型。本文将介绍 Python 中字符串的 15 种方法。 解决方法 以下是 Python 字符串操作的 15 种方法: 字符串拼接 可以使用 +算符将两个字符串拼接在一起。示例代码如下: python str1 = ‘Hello’ str…

    python 2023年5月13日
    00
  • Python运算符的应用超全面详细教程

    接下来我会详细讲解“Python运算符的应用超全面详细教程”的完整攻略。首先,你需要了解Python运算符的种类和使用方法。 Python运算符的种类 在Python中,常用的运算符有以下几种: 算术运算符:用于进行基本的数学运算,如加减乘除、取余等。例如 +、-、*、/、%。 比较运算符:用于进行数值比较,返回 True 或 False。例如 >、&…

    python 2023年5月19日
    00
  • python使用requests库爬取拉勾网招聘信息的实现

    Python 使用 requests 库爬取拉勾网招聘信息的实现 环境准备 首先,我们需要确保 Python 安装了 requests 库。如果没有安装,可以使用以下命令进行安装: pip install requests 分析网页结构 在使用 requests 爬取拉勾网招聘信息前,我们需要先分析网页的结构,以便于编写代码。以下是拉勾网的招聘页面的网址: …

    python 2023年5月14日
    00
  • 详解Python3的TFTP文件传输

    下面是详解Python3的TFTP文件传输的完整攻略。 什么是TFTP文件传输 TFTP(Trivial File Transfer Protocol)是一种简单的文件传输协议,它广泛用于网络中,特别是在无盘设备(例如路由器、交换机等)和网络启动环境中。TFTP数据传输使用UDP协议来建立数据报文和传递数据包,而不是TCP协议,因此传输速度相对更慢,但更简单…

    python 2023年6月3日
    00
  • python csv实时一条一条插入且表头不重复问题

    针对“python csv实时一条一条插入且表头不重复问题”,可以考虑以下步骤: 1.创建csv文件,并写入表头。 2.基于csv模块的DictWriter,打开csv文件,并指定写入字典对象。 3.在代码运行的过程中,逐行读取需要插入到csv中的数据,如字典对象、列表等格式。 4.编写插入数据的函数,通过DictWriter.writerow传入需要插入的…

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