篇二:爬虫笔记-Selenium动态网页

本文介绍了如何使用Selenium应对动态网页的爬虫挑战。内容包括Selenium的基本使用、表单元素操作、Cookie处理、页面等待策略以及12306抢票案例。Selenium能模拟浏览器行为,解决Ajax技术导致的动态内容加载问题,但其性能相对较低。此外,文章还展示了如何使用行为链进行更复杂的交互,并提供了显示等待和隐式等待的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 一、动态网页爬虫

    1、基本概念

    1. 动态网页:在网页不重新加载的情况下,通过ajax技术动态更新网站中的局部数据
    2. AJAX(asynchronous javascript and xml)异步JavaScript和xml,传统传输数据格式是xml语法,现在使用的数据格式基本都是JSON
    3. 使用Ajax加载的数据查看源代码是找不到的

    2、动态网页爬虫的解决方案

    1. 直接分析Ajax调用的接口,然后通过代码去请求这个接口
      • 优点:不需要做一些解析工作,代码量少,性能高
      • 缺点:分析接口比较复杂,特别是通过js混淆的接口,要有js功底,否则容易发现是爬虫
    2. 使用selenium+chromedriver模拟浏览器的行为
      • 优点:直接模拟浏览器行为,更稳定
      • 缺点:代码量多,性能低

    二、Selenium

    • Selenium相当于一个机器人,可以模拟人类在浏览器上的行为,比如点击,填充数据,删除cookie。
    • chromedriver是一个驱动Chrome浏览器的驱动程序,使用它才可以驱动浏览器。

    A、基本使用

    1. 打开网页地址

      driver = webdriver.Chrome(executable_path=‘’)

      driver.get(“网页地址”)

      from selenium import webdriver
      
      driver = webdriver.Chrome(executable_path=r"E:\develop\chromedriver\chromedriver_win32\chromedriver.exe")
      driver.get("https://www.baidu.com")
      
    2. 关闭网页

      driver.close()关闭当前网页

      driver.quit()退出浏览器,关闭所有网页

    3. 定位元素

      find_element:获取第一个满足条件的元素

      find_elements:获取所有满足条件的元素

      #根据ID查找,并填充文本框
      inputTag = driver.find_element_by_id("kw")
      inputTag.send_keys("加油啦")
      # 根据class查找
      input_tag = driver.find_element_by_class_name("s_ipt")
      input_tag.send_keys("努力女孩")
      
      input_tag = driver.find_element_by_name("wd")
      input_tag = driver.find_element_by_tag_name("input")
      input_tag = driver.find_element_by_xpath("//input[@id='kw']")
      input_tag = driver.find_element_by_css_selector("#form #kw")      
      

    B、表单元素

    1. 操作input

      • driver.find_element_xx()找到需要的元素
      • .sendKey(“”)填充值
    2. 操作checkbox

      • driver.find_element_xx()找到需要的元素
      • .click进行点击勾选
    3. 操作select

      select元素不能直接点击,因为点击后还要选择元素,所以selenium提供了一个类selenium.webdriver.support.ui.Select将所获得的元素当成参数传到这个类里,创建这个对象就可以对这个对象进行选择了

      • selectTag = Select(driver.find_element_xx())选择需要的标签,使用select创建对象
      • selectTag.select_by_index(n)根据索引选择
      • selectTag.select_by_value(“”)根据值选择
      • selectTag.select_by_visible_text(“”)根据可视的文本选择

    C、行为链

    • 行为链更能模拟人的行为,功能更加强大,更稳定,在自动化测试中非常有用

    • 步骤

      1. 获得驱动

        driver = webdriver.Chrome(驱动的绝对地址)

      2. 打开网址

        driver.get(url)

      3. 封装对象

        actions = ActionChains(driver)

      4. 获得需要操作的标签

        driver.find_element_by_xx

      5. 行为链模拟人类行为

        actions.move_to_element(xx)

      6. 运行,执行

        actions.perform()

        可以让它睡1一秒钟去执行下面的语句time.sleep(1)

      from selenium import webdriver
      from selenium.webdriver import ActionChains
      #获得驱动,打开网址
      driver = webdriver.Chrome(executable_path
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十二十二呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值