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

张开发
2026/4/12 4:19:47 15 分钟阅读

分享文章

Python爬虫进阶:Selenium模拟真人操作(解决反爬+动态网页)
一、前言很多人学会 requests 爬虫后会遇到一个问题 页面数据抓不到原因很简单网站使用了JavaScript动态加载或者使用了反爬机制这时候普通爬虫就失效了。 解决方案使用 Selenium 模拟浏览器操作二、什么是 SeleniumSelenium 是一个可以控制浏览器行为的工具比如打开网页点击按钮输入内容滚动页面 本质就是让代码像人一样操作浏览器三、安装环境pipinstallselenium下载浏览器驱动以 Chrome 为例ChromeDriver四、基础示例打开网页fromseleniumimportwebdriver driverwebdriver.Chrome()driver.get(https://example.com)print(driver.title)五、模拟用户操作核心1️⃣ 输入内容fromselenium.webdriver.common.byimportBy input_boxdriver.find_element(By.ID,search)input_box.send_keys(Python爬虫)2️⃣ 点击按钮buttondriver.find_element(By.ID,btn)button.click()3️⃣ 等待页面加载重点importtime time.sleep(2) 或更推荐fromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,result)))六、模拟“真人行为”防封关键⭐ 随机延迟importrandomimporttime time.sleep(random.uniform(1,3))⭐ 模拟滚动页面driver.execute_script(window.scrollTo(0, document.body.scrollHeight);)⭐ 模拟慢速输入importtimeforcinpython:input_box.send_keys(c)time.sleep(0.2) 这一步非常关键很多网站会检测输入速度七、完整实战示例推荐收藏fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByimporttimeimportrandom driverwebdriver.Chrome()driver.get(https://example.com)# 模拟输入input_boxdriver.find_element(By.ID,search)forcinPython: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加载✔ 登录操作

更多文章