利用python爬取新浪疫情数据并放入数据库
时间: 2023-07-30 10:05:51 浏览: 113
可以使用 Python 中的 BeautifulSoup 和 requests 库来爬取新浪疫情数据,并使用 MySQL 或者 MongoDB 等数据库进行存储。
以下是一个示例代码:
```python
import requests
from bs4 import BeautifulSoup
import pymysql
# 获取新浪疫情数据页面
url = 'https://news.sina.com.cn/2019-ncov/global-'
res = requests.get(url)
# 解析页面内容
soup = BeautifulSoup(res.text,'html.parser')
# 获取全球疫情数据表格
table = soup.find('table', {'class': 'table'})
# 获取表格中的所有行
rows = table.find_all('tr')
# 连接数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='covid19', charset='utf8mb4')
# 创建游标
cur = conn.cursor()
# 循环插入数据到数据库
for row in rows[1:]:
# 获取每行数据
data = row.find_all('td')
# 提取数据
country = data[0].text.strip()
confirmed = int(data[1].text.strip().replace(',', ''))
deaths = int(data[2].text.strip().replace(',', ''))
recovered = int(data[3].text.strip().replace(',', ''))
# 插入数据到数据库
sql = "INSERT INTO covid19 (country, confirmed, deaths, recovered) VALUES (%s, %s, %s, %s)"
val = (country, confirmed, deaths, recovered)
cur.execute(sql, val)
conn.commit()
# 关闭连接
cur.close()
conn.close()
```
在上述代码中,我们首先使用 requests 库发送 GET 请求获取新浪疫情数据页面,然后使用 BeautifulSoup 库解析页面内容,获取全球疫情数据表格,并使用 find_all() 方法获取表格中的所有行。
接着,我们使用 pymysql 库连接 MySQL 数据库,并使用游标插入数据到数据库中。在插入数据时,我们首先提取每行数据的国家、确诊数、死亡数和治愈数,并使用 INSERT INTO 语句将数据插入到数据库中。
最后,我们关闭游标和数据库连接。
需要注意的是,在运行代码之前需要先创建数据库和表,代码中的数据库名为 covid19,表名为 covid19,表结构如下:
```sql
CREATE TABLE covid19 (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
country VARCHAR(255) NOT NULL,
confirmed INT(11) NOT NULL,
deaths INT(11) NOT NULL,
recovered INT(11) NOT NULL
)
```
以上代码仅供参考,具体实现需要根据实际情况进行调整。
阅读全文