码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python21天学习挑战赛Day(20)·selenium


    ​
    ​

    活动地址:CSDN21天学习挑战赛

    目录

    一,准备阶段

            安装selenium

             安装浏览器驱动WebDriver

    二,简单使用

            打开浏览器

            无界面模式

            元素定位

            根据id属性值获取元素列表

            根据class属性值获取元素列表

            根据Xpath获取元素列表

            根据标签的文本获取元素列表

            根据标签包含的文本获取元素列表

            根据标签名获取元素列表


    一,准备阶段

            安装selenium

    pip install selenium

             安装浏览器驱动WebDriver

    Chrome

    点击下载chrome的webdriver: ​​​​​​http://chromedriver.storage.googleapis.com/index.html

    Firefox

    Firefox驱动下载地址为:Releases · mozilla/geckodriver · GitHub

    IE

    IE浏览器驱动下载地址为:http://selenium-release.storage.googleapis.com/index.html

             注意安装驱动的版本应匹配当前浏览器版本

     下载好后,将安装包解压放到python安装路径

    二,简单使用

            打开浏览器

     Chrome:

    1. from selenium import webdriver
    2. # 浏览器的初始化
    3. browser = webdriver.Chrome()
    4. # 发送请求
    5. browser.get('https://www.baidu.com/')
    6. # 打印页面的标题
    7. print(browser.title)
    8. # 退出模拟浏览器
    9. browser.quit() # 一定要退出!不退出会有残留进程

            Firefox:

    1. from selenium import webdriver
    2. # 浏览器的初始化
    3. browser = webdriver.Firefox()
    4. # 发送请求
    5. browser.get('https://www.baidu.com/')
    6. # 打印页面的标题
    7. print(browser.title)
    8. # 退出模拟浏览器
    9. browser.quit() # 一定要退出!不退出会有残留进程

    Edge:

    1. from selenium import webdriver
    2. # 浏览器的初始化
    3. browser = webdriver.Edge()
    4. # 发送请求
    5. browser.get('https://www.baidu.com/')
    6. # 打印页面的标题
    7. print(browser.title)
    8. # 退出模拟浏览器
    9. browser.quit() # 一定要退出!不退出会有残留进程

            无界面模式

    Headless模式是Chrome浏览器的无界面形态,可以在不打开浏览器的前提下,使用所有Chrome支持的特性运行我们的程序

    1. from selenium import webdriver
    2. # 1. 实例化配置对象
    3. chrome_options = webdriver.ChromeOptions()
    4. # 2. 配置对象添加开启无界面命令
    5. chrome_options.add_argument('--headless')
    6. # 3. 配置对象添加禁用gpu命令
    7. chrome_options.add_argument('--disable-gpu')
    8. # 4. 实例化带有配置对象的browser 对象
    9. browser = webdriver.Chrome(chrome_options=chrome_options)
    10. browser.get('https://www.baidu.com/')
    11. # 查看请求的数据
    12. print(browser.page_source) # 查看渲染后的数据,就可以Xpath进行解析获取数据了
    13. print(browser.get_cookies()) # 查看请求页面后的cookies值
    14. print(browser.current_url) # 查看请求url
    15. # 关闭页面
    16. browser.close()
    17. # 关闭浏览器
    18. browser.quit()

            元素定位

    1. from selenium import webdriver
    2. from selenium.webdriver.common.by import By
    3. chrome_options = webdriver.ChromeOptions()
    4. chrome_options.add_argument('--headless')
    5. browser = webdriver.Chrome(chrome_options=chrome_options)
    6. url = 'https://www.xxx.com/'
    7. browser.get(url)
    8. html_str = browser.page_source

    若访问网址时返回以下html_str:

    1. <div class="panel">
    2. <div class="panel-heading">
    3. <h4>Helloh4>
    4. div>
    5. <div class="panel_body">
    6. <ul class="list" id="list-1" name="element">
    7. <li class="element">Fooli>
    8. <li class="element">Barli>
    9. <li class="element">Jayli>
    10. ul>
    11. <ul class="list list-small" id="list-2">
    12. <li class="element">Fooli>
    13. <a href="https://www.baidu.com">百度官网a>
    14. <li class="element">Barli>
    15. ul>
    16. div>
    17. div>

            根据id属性值获取元素列表

    1. from selenium.webdriver.common.by import By
    2. # 获取第一个元素
    3. browser.find_element(by=By.ID, value="list-1")
    4. # 获取多个元素
    5. browser.find_elements(by=By.ID, value="list-1")

            根据class属性值获取元素列表

    1. # 获取第一个元素
    2. browser.find_element(by=By.CLASS_NAME, value="element")
    3. # 获取多个元素
    4. browser.find_elements(by=By.CLASS_NAME, value="element")

            根据Xpath获取元素列表

    1. # 返回标签为li,id为element的所有元素
    2. browser.find_element(by=By.XPATH, value="//li[@id='element']")
    3. browser.find_elements(by=By.XPATH, value="//li[@id='element']")

            根据标签的文本获取元素列表

    1. # 返回标签为li,id为element的所有元素
    2. browser.find_element(by=By.XPATH, value="//li[@id='element']")
    3. browser.find_elements(by=By.XPATH, value="//li[@id='element']")

            根据标签包含的文本获取元素列表

    1. # 获取一个元素
    2. browser.find_element(by=By.PARTIAL_LINK_TEXT, value="Fo")
    3. # 获取多个元素
    4. browser.find_elements(by=By.PARTIAL_LINK_TEXT, value="Fo")

            根据标签名获取元素列表

    1. # 获取一个元素
    2. browser.find_element(by=By.TAG_NAME, value="li")
    3. # 获取多个元素
    4. browser.find_elements(by=By.TAG_NAME, value="li")

  • 相关阅读:
    使用浏览器打印保存pdf文件时闪退/无反应
    1.5-11:整数的个数
    【数据结构】二叉搜索树(Java + 链表实现)
    个人用户实现发送短信功能
    set() 函数 | Python
    【分布式】分布式ID
    三方系统多渠道多场景的思考及代码分享
    如何阅读一篇论文
    【发版】java项目一键式发版,一键式发版脚本,如何实现一键式发版
    全国大学生数学建模A题目更新中…… 欢迎订阅
  • 原文地址:https://blog.csdn.net/weixin_62599885/article/details/126443821
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号