个性化阅读
专注于IT技术分析

Python Web将冠状病毒数据收集到MS Excel中

本文概述

先决条件: 使用BeautifulSoap进行网页爬取

冠状病毒病例在世界范围内迅速增加。本文将指导你如何通过Web爬取冠状病毒数据并将其导入Ms-excel。

什么是网站报文?

如果你曾经从网站上复制和粘贴信息, 那么你将执行与任何网络抓取工具相同的功能, 只是在微观的手动范围内。 Web抓取, 也称为在线数据挖掘, 是从网站提取或抓取数据的方法。收集这些知识, 然后将其转换为用户更易于访问的介质。它可以是电子表格或API。

方法:

  1. 要求网页提供回应。
  2. 解析并提取BeautifulsSoup()类方法和xml文件模块。
  3. 下载并导出数据大熊猫进入Excel。

数据来源:

我们需要一个网页来获取冠状病毒数据。因此, 我们将使用世界计网站在这里。 Worldometer的网页如下所示:

Web将冠状病毒数据收集到MS Excel中1

数据源

程式执行

你将需要一些库, 因此首先需要安装它们。

转到命令行并安装它们。

pip install requests
pip install lxml
pip install bs4

现在, 让我们看看如何使用这些库。

下面是将Web冠状病毒数据收集到Excel中的步骤:

第1步)使用要求库来抓取页面。

Python3

# Import required module
import requests
  
# Make requests from webpage
result = requests.get( 'https://www.worldometers.info/coronavirus/country/india/' )

我们下载的请求库可以获取响应, 为了从网页获取请求, 我们使用request.get(website URL)方法。如果请求成功, 则将其存储为巨型python字符串。运行result.text时, 我们将能够获取完整的网页源代码。但是代码不会结构化。

注意:如果防火墙被阻止, 则此操作可能会失败Python / Jupyter。有时, 如果第一次失败, 则需要运行两次。

第2步)采用BeautifulSoap()从网站提取数据的方法。

bs4库已经具有许多内置工具和方法来从这种性质的字符串(基本上是HTML文件)中获取信息。这是一个Python库, 用于从HTML和XML文件中提取数据。使用BeautifulSoup()的方法bs4我们可以创建一个模块汤包含所有配料该网页。

Python3

# Import required modules
import bs4
  
# Creating soap object
soup = bs4.BeautifulSoup(result.text, 'lxml' )

输入bs4是创建一个美丽汤目的。我们将在此处传递两件事, result.text字符串和xml文件作为构造函数参数的字符串。xml文件浏览此HTML文档, 然后找出不同的CSS类, 编号, HTML元素和标签等。

提取数据要找到该元素, 你需要右键单击并单击”检查数量”。请参考下面的快照。

Web将冠状病毒数据收集到MS Excel中2

检查网站

我们需要找到合适的班级, 即class_ =” maincounter-number”达到我们的目的。请参考下面的快照。

Web将冠状病毒数据收集到MS Excel中3

寻找合适的班级

的美丽汤对象已在我们的Python脚本中创建, 并且网站的HTML数据已从页面上刮下。接下来, 我们需要从HTML代码中获取我们感兴趣的数据。

Python3

# Searching div tags having maincounter-number class
cases = soup.find_all( 'div' , class_ = 'maincounter-number' )

输入屏幕截图(检查元素):

Web将冠状病毒数据收集到MS Excel中4

仍然有很多我们不想要的HTML代码。我们所需的数据条目包装在HTML div元素中和内部class_ =” maincounter-number”。我们可以利用这些知识来进一步清理已抓取的数据。

第三步储存资料

我们需要以某种可以有效使用的形式保存抓取的数据。对于此项目, 所有数据将保存在Python列表中。

Python3

# List to store number of cases
data = []
  
# Find the span and get data from it
for i in cases:
     span = i.find( 'span' )
     data.append(span.string)
  
# Dispaly number of cases 
print (data)

输入屏幕截图(检查元素):

Web将冠状病毒数据收集到MS Excel中5

输出如下:

Web将冠状病毒数据收集到MS Excel中6

我们将使用跨度从中获取数据div。我们只需要案例数, 而无需标签。所以我们将使用span.string得到这些数字, 然后将它们存储在数据[]。

现在已经有了很多案例, 我们准备将数据导出到Excel文件中。

步骤4)处理数据

我们的最后一步是将数据导出到Ms-excel, 为此我们将使用大熊猫模块。加载大熊猫模块并开始使用它, 导入软件包。

Python3

import pandas as pd
  
# Creating dataframe
df = pd.DataFrame({ "CoronaData" : data})
  
# Naming the coloumns
df.index = [ 'TotalCases' , ' Deaths' , 'Recovered' ]

数据框是2D标签数据结构, 可能是带有标签轴(行和列)的异构表格数据结构。

df = pd.DataFrame({” CoronaData”:data})用于创建一个数据框并为其命名并映射到我们之前创建的数据列表。

接下来, 我们将使用df.index.

输出如下: 

Web将冠状病毒数据收集到MS Excel中7

步骤5)将数据导出到Excel

我们准备将数据导出到Excel。我们将使用df.to_csv()此任务的方法。

Python3

# Exporing data into Excel
df.to_csv( 'Corona_Data.csv' )

输出如下:

Web将冠状病毒数据收集到MS Excel中8

以下是上述步骤的完整程序:

Python3

# Import required modules
import requests
import bs4
import pandas as pd
  
  
  
# Make requests from webpage
url = 'https://www.worldometers.info/coronavirus/country/india/'
result = requests.get(url)
  
  
  
# Creating soap object
soup = bs4.BeautifulSoup(result.text, 'lxml' )
  
  
  
# Searching div tags having maincounter-number class
cases = soup.find_all( 'div' , class_ = 'maincounter-number' )
  
  
  
# List to store number of cases
data = []
  
# Find the span and get data from it
for i in cases:
     span = i.find( 'span' )
     data.append(span.string)
  
# Dispaly number of cases 
print (data)
  
  
    
# Creating dataframe
df = pd.DataFrame({ "CoronaData" : data})
  
# Naming the coloumns
df.index = [ 'TotalCases' , ' Deaths' , 'Recovered' ]
  
  
  
# Exporing data into Excel
df.to_csv( 'Corona_Data.csv' )

最后结果:

Web将冠状病毒数据收集到MS Excel中9

首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。


赞(0) 打赏
未经允许不得转载:srcmini » Python Web将冠状病毒数据收集到MS Excel中
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏