Selenium怎么配合数据库,搞定表格数据抓取和存储那些事儿
- 问答
- 2026-01-13 06:56:04
- 3
你需要从一个网站上抓取一个产品列表,这个列表有好多页,每一页都是一个表格,里面有产品名称、价格、库存、发布日期等信息,你手动一页一页复制粘贴,不仅慢,还容易出错,这时候,Selenium 和数据库的组合拳就能派上大用场了,Selenium 负责像真人一样操作浏览器,把网页上的表格数据“读”出来,而数据库则负责当一个大容量的、有条理的仓库,把这些数据整整齐齐地存起来。
第一步:用 Selenium 当你的“眼睛和手”
你得让 Selenium 这个“机器人”学会看网页,你需要用代码告诉它:

- 打开浏览器,去到目标网站。 这就像你双击浏览器图标,输入网址一样简单。
- 找到那个表格。 网页是由各种 HTML 标签构成的,表格通常住在
<table>标签里,你需要用 Selenium 提供的方法,find_element(By.TAG_NAME, "table")或者find_element(By.CLASS_NAME, "某个类名")来精准地定位到这个表格。 - 把表格“拆解”成行和列。 找到了大表格 (
<table>) 后,里面每一行是<tr>标签,每一行里的每个格子是<td>标签(表头格子是<th>),你需要写一个循环,让 Selenium 遍历每一行 (<tr>),然后在每一行里,再遍历每一个单元格 (<td>),把里面的文字内容提取出来。 - 处理分页。 如果数据有多页,你还需要教 Selenium 如何翻页,通常是找到“下一页”按钮,然后点击它,你可以用一个
while循环,只要“下一页”按钮存在且可点击,就点击它,然后重复第2、3步抓取新一页的数据,直到没有下一页为止。
这样,Selenium 就能帮你把网站上所有页面的表格数据,一行一行、一列不落地提取出来,变成一个在你的程序里可以处理的列表或者字典格式,一行数据可能看起来像 ['产品A', '¥100', '50', '2023-10-27']。
第二步:用数据库当你的“智能仓库”

现在数据抓到手了,是乱七八糟地堆在文本文件里,还是规规矩矩地存进仓库?当然是后者,数据库就是这个仓库,这里我们以最常用的关系型数据库 SQLite 或 MySQL 为例,因为它们结构清晰,像 Excel 表格一样好理解。
- 设计仓库的货架(设计数据库表)。 在你把数据存进去之前,你得先决定好仓库里要摆一个什么样的货架,这个货架就是一张表,你需要根据抓取的数据内容,为这张表设计列(字段),对应我们抓取的数据,可以创建一张叫
products的表,里面包含name(产品名,文本类型)、price(价格,小数类型)、stock(库存,整数类型)、publish_date(发布日期,日期类型)等列,你还需要设定一个唯一的id列作为主键,方便管理,这个步骤通常需要先用 SQL 命令创建好表结构。 - 连接仓库大门(连接数据库)。 在你的 Python 程序里,你需要使用一个数据库连接库,SQLite 自带的
sqlite3或者操作 MySQL 的PyMySQL,用几行代码建立到数据库的连接,就像用钥匙打开仓库大门。 - 把数据搬进仓库(插入数据)。 这是最关键的一步,从 Selenium 那里,我们得到了一行行的数据,我们要用 SQL 的
INSERT语句,把这些数据一条条地插入到刚刚创建好的products表里,为了防止 SQL 注入攻击并提高效率,我们通常使用参数化查询,简单说,就是先写好一个带问号 占位符的 SQL 语句模板,INSERT INTO products (name, price, stock, publish_date) VALUES (?, ?, ?, ?),然后把每一行数据作为一个元组,传给这个模板去执行。
第三步:让 Selenium 和数据库“携手工作”

最理想的状态是,让整个流程自动化,你的程序应该像一条流水线:
- Selenium 抓取一页数据。
- 程序立刻将这页的每一行数据整理好。
- 通过数据库连接,将这些数据插入到数据库的表中。
- Selenium 自动点击“下一页”。
- 重复步骤1-4,直到所有页面抓取完毕。
- 关闭数据库连接,关闭 Selenium 的浏览器。
这样,你只需要运行一次程序,就可以喝杯咖啡,等待所有数据乖乖地、有条不紊地存入你的数据库了。
需要注意的几个坑
- 数据清洗: 网页上的数据可能不干净,比如价格可能带“¥”符号或者逗号,日期格式可能不标准,在存入数据库之前,你可能需要写一些简单的代码清洗一下数据,比如去掉货币符号,把字符串转换成数字或标准日期格式。
- 避免重复: 如果这个抓取任务你需要定期运行(比如每天一次),那你可能不希望数据库里出现完全一样的产品记录,这时候,你需要在插入数据前先检查一下,或者设计表结构时使用
UNIQUE约束,确保不会重复插入。 - 遵守规则(Robots协议): 在抓取任何网站前,最好检查一下网站的
robots.txt文件(通常在网站根目录下,如example.com/robots.txt),尊重网站关于爬虫的规则,要控制抓取频率,不要太频繁,以免对对方服务器造成压力。 - 应对网页变化: 网站可能会改版,你之前写的定位表格的代码可能就失效了,所以这类程序可能需要定期维护。
Selenium 负责前端模拟和抓取,数据库负责后端存储和管理,两者通过 Python 代码连接起来,形成一个强大的数据获取和沉淀系统,掌握了这个流程,你就能高效地处理很多需要从网页表格中批量获取数据的任务了。
(注:以上方法思路参考了常见的Web数据抓取和数据库操作实践,并非特指某一篇具体文章,而是综合了如CSDN、Stack Overflow等开发者社区中关于Selenium与数据库结合使用的普遍讨论和解决方案。)
本文由黎家于2026-01-13发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/79782.html
