Python爬虫进阶:Selenium模拟真人操作(解决反爬+动态网页)

一、前言

很多人学会 requests 爬虫后,会遇到一个问题:

👉 页面数据抓不到!

原因很简单:

  • 网站使用了 JavaScript动态加载
  • 或者使用了 反爬机制

这时候,普通爬虫就失效了。

👉 解决方案:使用 Selenium 模拟浏览器操作


二、什么是 Selenium?

Selenium 是一个可以控制浏览器行为的工具,比如:

  • 打开网页
  • 点击按钮
  • 输入内容
  • 滚动页面

👉 本质就是:让代码像人一样操作浏览器


三、安装环境

bash 复制代码
pip install selenium

下载浏览器驱动(以 Chrome 为例):

  • ChromeDriver

四、基础示例(打开网页)

python 复制代码
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

print(driver.title)

五、模拟用户操作(核心)

1️⃣ 输入内容

python 复制代码
from selenium.webdriver.common.by import By

input_box = driver.find_element(By.ID, "search")
input_box.send_keys("Python爬虫")

2️⃣ 点击按钮

python 复制代码
button = driver.find_element(By.ID, "btn")
button.click()

3️⃣ 等待页面加载(重点)

python 复制代码
import time

time.sleep(2)

👉 或更推荐:

python 复制代码
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.ID, "result"))
)

六、模拟"真人行为"(防封关键)

⭐ 随机延迟

python 复制代码
import random
import time

time.sleep(random.uniform(1, 3))

⭐ 模拟滚动页面

python 复制代码
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

⭐ 模拟慢速输入

python 复制代码
import time

for c in "python":
    input_box.send_keys(c)
    time.sleep(0.2)

👉 这一步非常关键,很多网站会检测输入速度!


七、完整实战示例(推荐收藏)

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import random

driver = webdriver.Chrome()

driver.get("https://example.com")

# 模拟输入
input_box = driver.find_element(By.ID, "search")
for c in "Python":
    input_box.send_keys(c)
    time.sleep(random.uniform(0.1, 0.3))

# 点击搜索
driver.find_element(By.ID, "btn").click()

# 等待加载
time.sleep(random.uniform(2, 4))

# 滚动页面
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

print(driver.page_source)

driver.quit()

八、防封核心技巧总结(重点)

技术 作用
Selenium 绕过JS限制
随机延迟 ⭐ 防止频率异常
慢速输入 ⭐ 模拟真人
滚动页面 模拟浏览行为
显式等待 防止加载失败

九、常见问题

❓ 为什么 Selenium 很慢?

👉 因为它是真实浏览器(不是接口请求)


❓ 为什么还是被封?

👉 可能缺少:

  • 代理IP
  • 浏览器指纹伪装

十、进阶方向(爆款内容)

如果你想继续提升,可以写这些:

  • 🔥 Selenium + 代理IP池
  • 🔥 无头浏览器(Headless)
  • 🔥 破解登录(Cookie复用)
  • 🔥 自动化抢票 / 抢商品

十一、总结

👉 requests 解决不了的:
用 Selenium 基本都能解决

✔ 动态网页

✔ JS加载

✔ 登录操作


相关推荐
清水白石008几秒前
别被 `Process.start()` 骗了:Python multiprocessing 从面试题到线上生产的进程启动机制实战
开发语言·python
愚公移山填海26 分钟前
【无标题】
笔记·python·学习·pycharm
天远API35 分钟前
零信任架构实战:基于天远公安三要素即时版构建自动化理赔合规网关
人工智能·python·架构·自动化
言乐637 分钟前
Python加速器2视频网页加速器
前端·javascript·css·python·音视频
计算机源码社1 小时前
基于Hadoop+Spark的黄金市场历史数据特征分析与可视化大屏 基于K-Means聚类算法的黄金历史价格阶段划分研究
大数据·hadoop·python·数据挖掘·数据分析·spark·毕业设计
hhzz1 小时前
【OpenCV 入门到精通 05】核心操作与像素处理:ROI、运算与性能优化
人工智能·python·opencv·性能优化
2601_962078231 小时前
Python接口自动化框架:pytest
python·pytest·接口自动化·测试框架·restfulapi
Alphapeople1 小时前
路径规划算法的python实现
开发语言·python·算法
旋生万物1 小时前
圈道裂痕——用 Python 验证素数分布的螺旋生成论判据
开发语言·python·数论·素数·cci·可计算数学
数据狐(Datafox)1 小时前
京东商品列表API接口解析(附 JSON 样例)
数据库·爬虫·json