跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

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

一、前言 很多人学会 requests 爬虫后,会遇到一个问题: 👉 页面数据抓不到!

原因很简单: 网站使用了 JavaScript动态加载 或者使用了 反爬机制 这时候,普通爬虫就失效了。

👉 解决方案: 使用 Selenium 模拟浏览器操作 二、什么是 Selenium?

Selenium 是一个可以 控制浏览器行为 的工具,比如: 打开网页 点击按钮 输入内容 滚动页面 👉 本质就是: 让代码像人一样操作浏览器 三、安装环境

pip install selenium

下载浏览器驱动(以 Chrome 为例): ChromeDriver 四、基础示例(打开网页)

from selenium import webdriver

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

print(driver.title)

五、模拟用户操作(核心) 1️⃣ 输入内容

from selenium.webdriver.common.by import By

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

2️⃣ 点击按钮

button = driver.find_element(By.ID, "btn")

button.click()

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

import time

time.sleep(2)

👉 或更推荐:

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")) )

六、模拟“真人行为”(防封关键) ⭐ 随机延迟

import random

import time

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

⭐ 模拟滚动页面

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

⭐ 模拟慢速输入

import time

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

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

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

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加载 ✔ 登录操作

相关文章