全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python动态网页抓取方法_selenium与requests结合应用【指导】

Python动态网页抓取需Selenium与requests结合:Selenium处理JS渲染、登录验证等交互,requests高效调用API获取数据。关键在于用Selenium提取Cookie、Token等参数后交由requests批量请求,兼顾真实性与效率。

Python动态网页抓取不能只靠requests,因为很多页面内容由JavaScript异步加载,requests拿不到渲染后的HTML。这时候需要Selenium驱动浏览器模拟真实访问,再配合requests高效处理后续请求(如接口、图片、文件等),两者结合才能兼顾“可执行性”和“效率”。

用Selenium获取渲染后的真实HTML

启动浏览器(推荐Chrome + ChromeDriver),打开目标网址,等待关键元素出现后再提取页面源码。注意显式等待比time.sleep()更可靠。

  • 安装:pip install selenium
  • 下载对应版本的chromedriver,并确保它在PATH中或指定绝对路径
  • 示例关键代码:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC

    driver = webdriver.Chrome()
    driver.get("https://example.com")
    # 等待某个class为"content"的div加载完成
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "content")))
    html = driver.page_source # 此时html含JS渲染后的内容
    driver.quit()

从Selenium中提取请求参数,交给requests发接口

有些动态页的数据来自XHR接口(比如列表分页、评论、商品详情)。与其让Selenium反复点击翻页,不如用它先登录/触发一次,再从Network面板或页面源码中分析出API地址、headers、cookies、token等,转而用requests批量调用——速度快、资源省、易调试。

  • driver.get_cookies()获取当前会话cookie,传给requests.Session()
  • driver.execute_script("return window.localStorage.getItem('token')")读取前端存储的认证信息
  • 查看浏览器开发者工具→Network→XHR,找带数据的请求,右键“Copy as cURL”,再用在线工具转成requests代码(如curlconverter)

混合策略:Selenium只做“必要动作”,requests负责“大量数据”

典型场景如登录后爬商品列表:Selenium完成输入账号密码、点登录、过滑块验证;登录成功后,用requests直接调用商品API(带Cookie和Token),避免Selenium逐页跳转、解析DOM。

  • 登录后用driver.current_url确认跳转成功,再用driver.get_cookie("sessionid")提取关键凭证
  • 构造requests会话:
    s = requests.Session()
    for cookie in driver.get_cookies():
    s.cookies.set(cookie['name'], cookie['value'])
    resp = s.get("https://api.example.com/items?page=2", headers={"User-Agent": "Mozilla/5.0..."})
  • 若接口需签名或时间戳,可在Selenium中执行JS生成(driver.execute_script("return generateSign(...)")),再传给requests

注意事项与避坑点

两者结合不是简单拼接,要注意上下文一致性与反爬适配。

  • Selenium默认User-Agent较明显,建议启动时加参数伪装:
    options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...")
  • requests无法自动执行JS,所以不能替代Selenium处理验证码、Canvas指纹、WebGL检测等强对抗逻辑
  • 关闭Selenium的图片加载可提速:
    options.add_argument("--blink-settings=imagesEnabled=false")
  • 频繁启停浏览器开销大,建议复用driver实例,或用无头模式+连接池管理


# javascript  # python  # java  # html  # js  # 前端  # windows  # cookie  # 浏览器  # 工具 


相关文章: 如何在Golang中使用replace替换模块_指定本地或远程路径  SQL查询语句优化的实用方法总结  建站主机选虚拟主机还是云服务器更好?  想学网站制作怎么学,建立一个网站要花费多少?  建站之星安装后界面空白如何解决?  建站之星后台管理系统如何操作?  制作网站的软件免费下载,免费制作app哪个平台好?  建站之星如何保障用户数据免受黑客入侵?  如何用西部建站助手快速创建专业网站?  建站之星导航配置指南:自助建站与SEO优化全解析  网站app免费制作软件,能免费看各大网站视频的手机app?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  名字制作网站免费,所有小说网站的名字?  郑州企业网站制作公司,郑州招聘网站有哪些?  深圳网站制作的公司有哪些,dido官方网站?    定制建站平台哪家好?企业官网搭建与快速建站方案推荐  临沂网站制作企业,临沂第三中学官方网站?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  如何通过西部数码建站助手快速创建专业网站?  建站之星如何实现PC+手机+微信网站五合一建站?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  制作网站外包平台,自动化接单网站有哪些?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  如何在阿里云通过域名搭建网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  c# 在ASP.NET Core中管理和取消后台任务  如何撰写建站申请书?关键要点有哪些?  如何通过VPS建站实现广告与增值服务盈利?  ,网页ppt怎么弄成自己的ppt?  油猴 教程,油猴搜脚本为什么会网页无法显示?  大连网站设计制作招聘信息,大连投诉网站有哪些?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何将凡科建站内容保存为本地文件?  公司网站制作价格怎么算,公司办个官网需要多少钱?  如何生成腾讯云建站专用兑换码?  高防服务器:AI智能防御DDoS攻击与数据安全保障  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何在宝塔面板中创建新站点?  济南网站制作的价格,历城一职专官方网站?  建站之星如何优化SEO以实现高效排名?  招商网站制作流程,网站招商广告语?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何基于PHP生成高效IDC网络公司建站源码?  专业网站建设制作报价,网页设计制作要考什么证?  建站主机与虚拟主机有何区别?如何选择最优方案? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。