• Python爬虫——Selenium 浏览器交互与异常处理


    Python爬虫——Selenium 浏览器交互与异常处理

    1、控制浏览器

    Selenium 可以控制浏览器执行想要的动作,如前进、后退、点击、刷新、输入文本等。

    代码实例(当前 selenium 版本:3.9)

    import time
    
    from selenium import webdriver
    # 浏览器对象
    browser = webdriver.Chrome()
    # 浏览器访问网站
    browser.get('https://www.baidu.com')
    
    # 定位输入框
    input_kw = browser.find_element_by_id('kw')
    
    time.sleep(2)
    
    # 输入'王维家'
    input_kw.send_keys('王维家')
    
    time.sleep(2)
    
    # 清除掉输入框的文本
    input_kw.clear()
    
    time.sleep(2)
    
    # 重新输入
    input_kw.send_keys('毛不易')
    
    # 定位 “百度一下”,并点击,提交搜索,执行搜索操作
    button = browser.find_element_by_id('su')
    button.click()
    
    # 用于提交表单,如搜索框内输入关键字之后的“回车”操作,也可以执行搜索操作
    # input_kw.submit()
    
    time.sleep(2)
    
    # 滚动条拉到底部
    js_bottom = "document.documentElement.scrollTop=100000"
    browser.execute_script(js_bottom)
    
    time.sleep(2)
    
    # 定位“下一页”按钮标签,并点击
    nextPage = browser.find_element_by_xpath('//a[@class="n"]')
    nextPage.click()
    
    time.sleep(2)
    
    # 回到上一页面,后退操作
    browser.back()
    time.sleep(2)
    
    # 使浏览器历史记录前进一步,前进操作
    browser.forward()
    
    time.sleep(2)
    
    # 刷新浏览器当前页面
    browser.refresh()
    
    time.sleep(2)
    
    # 关闭浏览器
    browser.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    上面代码控制浏览器进行的操作:

    1. 控制浏览器打开百度
    2. 在搜索框输入 “王维家”
    3. 清除掉搜索框的文本
    4. 重新输入“毛不易”
    5. 定位 “百度一下”,并点击,提交搜索,执行搜索操作
    6. 将网页的滚动条拉到底部
    7. 点击“下一页”按钮
    8. 执行浏览器回退操作,回到上一步
    9. 执行浏览器前进操作,和上一步相反
    10. 刷新浏览器当前页面
    11. 关闭浏览器

    注意:

    • click() 方法是Selenium WebDriver提供的操作鼠标的方法,其作用是单击已经定位到的节点。

    • .forward() 和 back() 方法表示浏览器前进和后退的功能

    • double_click(),其作用是双击已经定位到的节点。

    • 程序运行中间执行了多次阻塞操作 time.sleep(2)

    2、异常处理

    在使用Selenium的时候,可能会遇到一些异常,例如超时(TimeoutException)、节点未找到(NoSuchElementException)等。一旦出现此类异常,程序便会停止运行。为了让程序不停止运行我们可以使用 try except 语句来捕获各种异常,对异常进行处理。

    模拟节点未找到异常

    from selenium import webdriver
    
    # 声明浏览器对象,并访问网站
    browser = webdriver.Chrome()
    url = "https://www.baidu.com"
    browser.get(url)
    # 查找节点
    element1 = browser.find_element_by_link_text("大地图")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    控制台提示的错误信息:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xC4PYbCO-1660556957741)(D:\学习笔记\笔记图片\Python\QQ截图20220815171437.png)]

    使用 try except 语句来捕获异常

    from selenium import webdriver
    from selenium.common.exceptions import NoSuchElementException
    
    browser = webdriver.Chrome()
    url = "https://www.baidu.com"
    
    browser.get(url)
    try:
        element1 = browser.find_element_by_link_text("大地图")
    except NoSuchElementException:
        print("没有找到节点")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    执行结果:使用 try except 语句来捕获异常后,程序就不会中断了。

    没有找到节点
    
    • 1

    官方文档中对更对异常类的详细介绍

  • 相关阅读:
    PTA_乙级_1006
    从海后丢掉“海后”这个角色说起—— 论VOC对于DTC品牌的重要性
    iwebsec靶场 SQL注入漏洞通关笔记7- 空格过滤绕过
    【Python爬虫】requests库get和post方法使用
    [CLickhouse] 学习小计
    王道书 P191 思维拓展
    leetcode 343 整数拆分
    184页10万字智慧城市公共服务中台:业务和数据中台建设方案
    基于Python+Pygame实现一个俄罗斯方块小游戏【完整代码】
    【C语言拓展】缓冲区、结构体大小计算、命令行参数
  • 原文地址:https://blog.csdn.net/wpc2018/article/details/126351644