全网整合营销服务商

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

免费咨询热线: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  # 浏览器  # 工具 


相关文章: C++如何将C风格字符串(char*)转换为std::string?(代码示例)  如何通过商城免费建站系统源码自定义网站主题?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  h5网站制作工具有哪些,h5页面制作工具有哪些?  网站制作价目表怎么做,珍爱网婚介费用多少?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何通过多用户协作模板快速搭建高效企业网站?  如何在香港服务器上快速搭建免备案网站?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  制作网站公司那家好,网络公司是做什么的?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  全景视频制作网站有哪些,全景图怎么做成网页?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  如何在阿里云域名上完成建站全流程?  网页设计网站制作软件,microsoft office哪个可以创建网页?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何确保FTP站点访问权限与数据传输安全?  Thinkphp 中 distinct 的用法解析  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  制作网站怎么制作,*游戏网站怎么搭建?  如何通过VPS搭建网站快速盈利?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  已有域名和空间如何快速搭建网站?  如何通过虚拟机搭建网站?详细步骤解析  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  建站之星安装后如何配置SEO及设计样式?  制作门户网站的参考文献在哪,小说网站怎么建立?  如何撰写建站申请书?关键要点有哪些?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  行程制作网站有哪些,第三方机票电子行程单怎么开?  如何选择域名并搭建高效网站?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  建站主机选购指南与交易推荐:核心配置解析  如何通过FTP服务器快速搭建网站?  浅析上传头像示例及其注意事项  c# 在高并发场景下,委托和接口调用的性能对比  如何在自有机房高效搭建专业网站?  微课制作网站有哪些,微课网怎么进?  利用JavaScript实现拖拽改变元素大小  建站之星北京办公室:智能建站系统与小程序生成方案解析  红河网站制作公司,红河事业单位身份证如何上传?  宝塔建站无法访问?如何排查配置与端口问题?  建站之星如何一键生成手机站?  油猴 教程,油猴搜脚本为什么会网页无法显示?  linux top下的 minerd 木马清除方法  如何在阿里云部署织梦网站? 

您的项目需求

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