Python实战:将爬虫获取到的数据存到数据库中

打印 上一主题 下一主题

主题 518|帖子 518|积分 1554

在前几篇 Python 实战中,我们直接把爬虫获取到的数据存储到 excel 文件或者 csv 文件中。今天,我们将爬虫获取到的数据存储到数据库中。
而存到数据库中,我们可以选择 MySQL、PostgreSQL、SqLite、Sql Server 等数据库。
在这些数据库中 SqLite 最轻量级、不需要配置,Python 自带 SQLite ,今天我们选择将爬虫获取到的数据存到 SQLite 数据库中,以便以后举行查询和分析。

一、SQLite 简介

SQLite 是一个轻量级的关系型数据库,它是一个开源的嵌入式数据库引擎。SQLite 占用资源非常少,通常用于嵌入式应用程序和移动装备,也常常被用作桌面应用程序的本地数据库。由于其小巧和便携性,SQLite 成为了许多开发人员的首选数据库。
二、创建sqlite数据库

Python 的标准库中包含了一个名为 sqlite3 的模块,可以用于访问 SQLite 数据库。要利用 SQLite,只需在 Python 代码中导入 sqlite3 模块即可。
  1. # 导入模块
  2. import sqlite3
  3. # 连接数据库
  4. conn = sqlite3.connect('sqlite_test.db')
  5. # 创建一个游标对象,用于执行 SQL 语句
  6. cursor = conn.cursor()
  7. # 创建表
  8. cursor.execute('''CREATE TABLE person
  9.        (id varchar(20) PRIMARY KEY,
  10.         name varchar(20));''')
  11. # 新增
  12. cursor.execute("INSERT INTO person (id, name) VALUES ('1', '张三')")
  13. cursor.execute("INSERT INTO person (id, name) VALUES ('2', '李四')")
  14. cursor.execute("INSERT INTO person (id, name) VALUES ('3', '王五')")
  15. # 关闭 cursor
  16. cursor.close()
  17. # 提交当前事务
  18. conn.commit()
  19. # 关闭连接
  20. conn.close()
复制代码
在同一级文件目录下,可以查看刚才实验程序后生成的数据库文件,截图如下:

三、数据库图形化工具

我们可以通过 SQLiteStudio、Navicat for SQLite 等图形化工具,或者在 Pycharm 中安装 Database Navigator 插件,直观的查看数据库表布局和数据。
本文利用 SQLiteStudio 图形化工具。
1、SQLiteStudio



  • GitHub 开源地点:https://github.com/pawelsalawa/sqlitestudio
  • 下载地点 1:https://sqlitestudio.pl/
  • 下载地点 2:https://github.com/pawelsalawa/sqlitestudio/releases
下载、安装、打开 SQLiteStudio,连接刚才生成的sqlite_test.db数据库文件,打开person表,就可以直观的看到刚才写入到数据库中的数据。

2、Database Navigator插件

也可以在 Pycharm 中安装 Database Navigator 插件,查看数据库表布局和数据。

四、爬虫实战

以爬取王者光彩官网展示的 117 个英雄,保存到 SQLite 数据库为例。
打开王者光彩官网——英雄资料网页,url 为https://pvp.qq.com/web201605/herolist.shtml

打开开发者工具,查看 Network 中的请求,找到heroist.json这个请求,在 Headers 里可以找到请求 url 为https://pvp.qq.com/web201605/js/herolist.json

在 Response 里可以看到返回的是 117 个英雄的属性,我们只保存其中的ename 、cname、 title 、skin_name4 个字段到本地数据库。

分析完成,开始写爬虫代码和保存到 SQLite 数据库的代码。
完备代码如下:
  1. import requests
  2. import pandas as pd
  3. import sqlite3
  4. url = "https://pvp.qq.com/web201605/js/herolist.json"
  5. response_json = requests.get(url).json()
  6. df = pd.json_normalize(response_json, errors='ignore')
  7. # 选择保存的列
  8. df = df.loc[:, ['ename', 'cname', 'title', 'skin_name']]
  9. # 创建一个SQLite数据库连接
  10. conn = sqlite3.connect('herolists.db')
  11. # 将DataFrame写入SQLite数据库
  12. df.to_sql('herolists_table', conn, if_exists='replace', index=False)
  13. # 提交更改并关闭连接
  14. conn.commit()
  15. conn.close()
复制代码
上面代码的实验逻辑如下:

  • 导入所需的库:requests(用于发送 HTTP 请求),pandas(用于处置惩罚数据)和 sqlite3(用于连接 SQLite 数据库)。
  • 定义 API 的 URL。
  • 利用 requests.get() 方法获取 API 的响应,并利用 json() 方法将其转换为 JSON 格式。
  • 利用 pd.json_normalize() 方法将 JSON 数据转换为 Pandas DataFrame。
  • 选择要保存的列(ename、cname、title 和 skin_name)。
  • 利用 sqlite3.connect() 方法创建一个 SQLite 数据库连接。
  • 利用 df.to_sql() 方法将 DataFrame 写入 SQLite 数据库。if_exists='replace' 参数表示如果表已存在,则替换它。index=False 参数表示不包含索引列。
  • 利用 conn.commit() 方法提交更改,并利用 conn.close() 方法关闭连接。
五、查看数据

利用 SQLiteStudio 图形化工具,连接刚才生成的herolists.db数据库文件,打开herolists_table表,就可以直观的看到刚才写入到数据库中的数据,117 条数据已经保存到 SQLite 数据库。

六、总结

在这个 Python 实战中,我们学习了怎样将爬虫获取到的数据存储到数据库中。首先,我们利用requests库获取了 API 的数据,并将其转换为 JSON 格式。然后,我们利用pandas库将 JSON 数据转换为 DataFrame,并从中选择了需要保存的列。接下来,我们利用sqlite3库创建了一个 SQLite 数据库连接,并将 DataFrame 写入到了数据库中。末了,我们提交了更改并关闭了连接。
通过这个实战,我们学会了怎样利用 Python 将爬虫获取到的数据存储到 SQLite 数据库中。这为我们在实际项目中处置惩罚和分析数据提供了很大的便利。然而,这仅仅是一个简单的示例,实际项目中大概需要处置惩罚更复杂的数据和数据库。因此,我们需要不断学习和探索,以进步自己的数据处置惩罚本领。
   本文首发在“程序员coding”公众号,接待关注与我一起互换学习。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天津储鑫盛钢材现货供应商

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表