Selenium Python 网页爬虫入门指南

最后更新于 June 16, 2025

刚开始接触网页爬虫的时候,我还以为“抓点 HTML 不就是分分钟的事吗?”结果越学越发现,网页爬虫早就成了销售、电商、市场调研等行业的标配技能。网上数据量大得惊人——,而企业对数据洞察的需求也越来越高。但现实是:大部分数据都藏在动态页面、JavaScript 脚本和各种交互操作背后,普通工具根本搞不定。

这时候,像 Selenium 这样的 Python 爬虫工具就成了“救命稻草”。Selenium Python 能自动操作真实浏览器,帮你轻松搞定那些复杂的动态网站。今天我就用最接地气的方式,带你一步步实操——比如怎么从 抓取商品数据。同时还会介绍下 这种 AI 工具,几分钟就能搞定同样的任务,几乎不用写代码。

为什么网页爬虫这么重要?动态网站又为啥这么难搞?

先说说背景:网页爬虫早就不是极客专属了,销售、市场、电商、运营团队都在用。想监控竞品价格?找潜在客户?分析用户评价?网页爬虫都能帮你搞定。其实,都把价格数据当成首要目标,而且80–90% 的线上数据都是非结构化的——你根本没法直接复制粘贴进 Excel。

问题来了:现在的网站大多是动态加载的。内容靠 JavaScript 渲染,数据藏在按钮后面,或者要不停下拉才能看到。像 requests 或 BeautifulSoup 这种基础爬虫,只能抓静态 HTML,等于在看一份永远不会更新的报纸。如果你要的数据需要点击、滚动或登录才能出现,那就必须用能模拟真实用户操作的工具。

Selenium Python 到底是什么?为啥用它做网页爬虫?

Selenium Python 是啥?简单说,Selenium 是一款浏览器自动化神器。你可以用 Python 脚本控制真实浏览器——点按钮、填表单、滚动页面,甚至抓取那些只有交互后才显示的数据。

Selenium Python 和基础爬虫有啥区别?

  • Selenium Python:能自动化真实浏览器(比如 Chrome),执行 JavaScript,操作动态元素,等内容加载——就像真人操作一样。
  • Requests/BeautifulSoup:只能抓静态 HTML,速度快、轻量,但搞不定 JS 渲染和用户交互内容。

你可以把 Selenium 想象成你的“机器人实习生”:它能在浏览器里做你能做的所有事,但需要你给它详细指令(还得有点耐心)。

哪些场景适合用 Selenium?

  • 无限滚动页面(比如社交媒体、商品列表)
  • 交互式筛选或下拉菜单(比如在 选鞋码)
  • 需要登录或关闭弹窗才能看到的内容
  • 单页应用(SPA)(比如 React、Vue 等)

如果只是抓简单页面的静态文本,用 BeautifulSoup 就够了。但遇到动态内容,Selenium 才是你的“神兵利器”。

Selenium Python 环境怎么搭建?

正式开干前,先把环境配好。每一步都很简单,小白也能轻松搞定。

1. 安装 Python 和 Selenium

先确保你装了 Python 3。去 下载。检查下版本:

python --version

然后用 pip 安装 Selenium:

pip install selenium

这样就能拿到最新版 Selenium 包了。

2. 下载并配置 ChromeDriver

Selenium 需要“驱动”来控制浏览器。用 Chrome 的话,就得装

  • 查 Chrome 版本:打开 Chrome,菜单 → 帮助 → 关于 Google Chrome。
  • 下载对应版本的 ChromeDriver:驱动版本要和浏览器一致。
  • 解压并放好驱动:把 chromedriver.exe(或 Mac/Linux 版本)放到系统 PATH 或项目文件夹下。

小技巧: 也可以用 webdriver_manager 这种 Python 包自动下载驱动,但新手手动配也没问题。

3. 测试环境是否正常

新建个 test_selenium.py 文件,写上:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.example.com")
print(driver.title)
driver.quit()

运行后,你会看到 Chrome 自动打开,访问 ,打印网页标题,然后关闭。如果弹出“Chrome 正在被自动化测试软件控制”,说明环境配好了!

Selenium Python 实战:抓取 商品数据

下面用 Selenium 实操一遍:目标是从 抓取商品名称和价格。

步骤 1:启动浏览器并访问页面

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://www.allbirds.com/collections/mens")

步骤 2:等待动态内容加载

动态网站内容加载有延迟,要用 Selenium 的等待功能:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "div.product-card"))
)

(实际用的时候建议用开发者工具确认 CSS 选择器,这里假设商品卡片用 div.product-card。)

步骤 3:定位元素并提取数据

products = driver.find_elements(By.CSS_SELECTOR, "div.product-card")
print(f"Found {len(products)} products")
data = []

for prod in products:
    name = prod.find_element(By.CSS_SELECTOR, ".product-name").text
    price = prod.find_element(By.CSS_SELECTOR, ".price").text
    data.append((name, price))
    print(name, "-", price)

你会看到类似下面的输出:

Found 24 products
Wool Runner - $110
Tree Dasher 2 - $135
...

步骤 4:保存数据到 CSV 文件

把结果写进 CSV 文件:

import csv
with open("allbirds_products.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["Product Name", "Price"])
    writer.writerows(data)

别忘了关闭浏览器:

driver.quit()

打开 CSV 文件,你就能看到所有商品名称和价格,后续分析超方便。

Selenium Python 做网页爬虫常见难题和解决办法

实际爬取时,经常会遇到各种“坑”,下面是常见场景的应对思路:

等待元素加载

动态页面加载慢,建议用显式等待:

WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.CSS_SELECTOR, ".product-card"))
)

这样能避免元素还没出来就报错。

处理分页

想抓多页数据?可以循环点“下一页”:

while True:
    try:
        next_btn = driver.find_element(By.LINK_TEXT, "Next")
        next_btn.click()
        WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".product-card")))
    except Exception:
        break  # 没有更多页面了

如果是无限滚动页面:

import time
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        break
    last_height = new_height

处理弹窗和登录

遇到弹窗挡路?可以自动关闭:

driver.find_element(By.CSS_SELECTOR, ".modal-close").click()

自动登录?填表单再提交:

driver.find_element(By.ID, "email").send_keys("user@example.com")
driver.find_element(By.NAME, "login").click()

注意:验证码和双重验证一般很难自动化。

Selenium Python 做网页爬虫的局限

说实话,Selenium 虽然很强,但也有不少“槽点”:

  • 速度慢:每次都要完整加载浏览器、图片和脚本。要抓 1000 页?那得等半天。
  • 资源消耗大:占用大量 CPU 和内存。如果并发开多个浏览器,对电脑要求很高。
  • 配置繁琐:驱动和浏览器版本要对上,升级维护麻烦,每个网站都得单独写代码。
  • 容易受页面变动影响:网站结构一变,脚本就容易失效。
  • 数据清洗要手动:比如翻译描述、做情感分析,还得接别的库或 API。

对于不懂技术的业务用户,或者只想快速拿到结构化数据的人来说,Selenium 就像用坦克打雪仗,太重型了。

selenium 1.jpeg

Thunderbit:AI 网页爬虫的无代码新体验

现在,来看看一款专为业务用户设计的工具:。Thunderbit 是一款 AI 网页爬虫 Chrome 插件,无需写代码、无需复杂配置,点几下就能从任意网站提取数据。

Thunderbit 有哪些独家亮点?

  • AI 字段识别:点“AI 智能识别字段”,Thunderbit 会自动判断哪些内容要抓——比如商品名、价格、图片等。
  • 子页面抓取:需要商品详情页的数据?Thunderbit 能自动点进去提取更多信息。
  • 数据智能增强:边抓边翻译描述、总结文本、做情感分析。
  • 一键导出:数据可直接导出到 Excel、Google Sheets、Notion 或 Airtable,无需手动处理。
  • 零代码界面:专为非程序员设计,只要会用浏览器就能上手。

我确实有点偏爱(毕竟我参与了 Thunderbit 的开发!),但真心觉得它是业务团队获取结构化网页数据最快捷的方式,尤其适合销售、电商和调研场景。

Thunderbit 和 Selenium Python 对比

来一组直观对比:

对比维度Selenium PythonThunderbit(AI 无代码)
配置时间中等到复杂——需安装 Python、Selenium、ChromeDriver、写代码极快——安装 Chrome 插件,几分钟即可用
技能要求高——需懂编程和 HTML低——点选操作,AI 自动识别
动态内容处理很强——能应对 JS、点击、滚动很强——浏览器内运行,支持 AJAX、无限滚动、子页面
速度慢——浏览器开销大小中型任务快——AI 自动识别,直接操作 DOM
可扩展性难扩展——资源消耗大适合几百到几千条数据;不适合超大规模批量抓取
数据处理手动——需写代码清洗、翻译、情感分析自动——AI 可实时翻译、总结、分类、增强
导出方式需自定义代码导出 CSV、Sheets 等一键导出到 Excel、Google Sheets、Notion、Airtable
维护成本高——易受页面变动影响低——AI 能适应多种页面变化,用户维护少
特色功能全浏览器自动化,自定义流程AI 洞察、模板库、数据增强、免费提取器

对大多数业务用户来说,Thunderbit 就像一股清流——再也不用为代码和驱动头疼。

实战演示:用 Thunderbit 抓取 商品数据

看看 Thunderbit 怎么搞定同样的任务:

  1. 安装
  2. 打开
  3. 点 Thunderbit 图标,选“AI 智能识别字段”
    • Thunderbit 的 AI 会自动识别“商品名称”、“价格”、“商品链接”等字段
  4. (可选)添加“描述(日语)”或“情感分析”字段
    • Thunderbit 会边抓边翻译或分析
  5. 点击“抓取”
    • 所有商品数据会自动汇总成表格
  6. 一键导出到 Google Sheets、Notion 或 Excel

不用写代码,不用等浏览器加载,不用手动处理 CSV。数据结构化,随时可用。

什么时候用 Selenium Python,什么时候用 Thunderbit?

到底选哪个工具?我的建议是:

  • 适合用 Selenium Python 的场景:
    • 你是开发者,或者需要完全自定义浏览器自动化流程
    • 爬虫任务非常复杂,或是大型软件项目的一部分
    • 需要自动化复杂操作(比如登录、下载、多步表单)
    • 需要大规模抓取(有技术支持)
  • 适合用 Thunderbit 的场景:
    • 你是业务用户、分析师或市场人员,需要快速拿到数据
    • 不想折腾代码和环境配置
    • 需要边抓边翻译、情感分析或数据增强
    • 项目规模为小到中等(几百到几千条数据)
    • 希望一键导出到 Excel、Google Sheets、Notion 或 Airtable

说真的,我见过不少团队花几天写 Selenium 脚本,Thunderbit 十分钟就能搞定。如果不是极端定制化或超大规模需求,Thunderbit 通常更快、更友好。

selenium 2.jpeg

附加建议:如何高效且合规地做网页爬虫

在你开启数据之旅前,送你几条实用建议:

  • 遵守 robots.txt 和网站服务条款:一定要看清楚网站允许抓哪些内容,禁止爬的别硬来。
  • 控制请求频率:别高频刷服务器,适当加延时或用内置限速功能。
  • 必要时更换 User-Agent/IP:有助于避免被简单封禁,但别违反网站政策。
  • 避免抓取个人或敏感信息:只采集公开数据,注意合规(比如 GDPR)。
  • 优先用 API:如果网站有开放 API,优先用,安全又稳定。
  • 未经许可不要抓取登录或付费内容:涉及法律和道德风险。
  • 记录操作并妥善处理异常:遇到封禁要及时调整策略。

关于爬虫合规和法律问题,可以参考

总结:选对最适合你的网页爬虫工具

网页爬虫技术一直在进化,从手写脚本到 AI 无代码工具。Selenium Python 依然是开发者应对复杂动态网站的利器,但学习和维护成本不低。对大多数业务用户来说,Thunderbit 提供了更快、更简单的结构化数据获取方式,还能自动翻译、情感分析、一键导出。

我的建议?两种方式都可以试试。如果你是开发者,可以用 Selenium 针对 写个脚本体验下。如果你追求效率或者不想折腾,直接用 试试,免费额度足够你在常用网站上体验。

最后提醒:合规抓取,善用数据,祝你 IP 永不被封!

想了解更多?推荐阅读:

免费试用 Thunderbit AI 网页爬虫
Shuai Guan
Shuai Guan
Co-founder/CEO @ Thunderbit. Passionate about cross section of AI and Automation. He's a big advocate of automation and loves making it more accessible to everyone. Beyond tech, he channels his creativity through a passion for photography, capturing stories one picture at a time.
Topics
Selenium PythonPython 爬虫Selenium 教程
试用 Thunderbit
用 AI 零门槛抓取网页数据,自动提取、总结与填充。
提供免费版
支持中文
目录
用 AI 提取数据
一键导出数据到 Google Sheets、Airtable 或 Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week