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:

from selenium import webdriver

# 浏览器的初始化
browser = webdriver.Chrome()
# 发送请求
browser.get('https://www.baidu.com/')

# 打印页面的标题
print(browser.title)

# 退出模拟浏览器
browser.quit()  # 一定要退出!不退出会有残留进程

        Firefox:

from selenium import webdriver

# 浏览器的初始化
browser = webdriver.Firefox()
# 发送请求
browser.get('https://www.baidu.com/')

# 打印页面的标题
print(browser.title)

# 退出模拟浏览器
browser.quit()  # 一定要退出!不退出会有残留进程

Edge:

from selenium import webdriver

# 浏览器的初始化
browser = webdriver.Edge()
# 发送请求
browser.get('https://www.baidu.com/')

# 打印页面的标题
print(browser.title)

# 退出模拟浏览器
browser.quit()  # 一定要退出!不退出会有残留进程

        无界面模式

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

from selenium import webdriver

# 1. 实例化配置对象
chrome_options = webdriver.ChromeOptions()
# 2. 配置对象添加开启无界面命令
chrome_options.add_argument('--headless')
# 3. 配置对象添加禁用gpu命令
chrome_options.add_argument('--disable-gpu')
# 4. 实例化带有配置对象的browser 对象
browser = webdriver.Chrome(chrome_options=chrome_options)

browser.get('https://www.baidu.com/')

# 查看请求的数据
print(browser.page_source)  # 查看渲染后的数据,就可以Xpath进行解析获取数据了
print(browser.get_cookies())  # 查看请求页面后的cookies值
print(browser.current_url)  # 查看请求url

# 关闭页面
browser.close()
# 关闭浏览器
browser.quit()

        元素定位

from selenium import webdriver
from selenium.webdriver.common.by import By

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=chrome_options)
url = 'https://www.xxx.com/'
browser.get(url)
html_str = browser.page_source

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

<div class="panel">
    <div class="panel-heading">
        <h4>Hello</h4>
    </div>
    <div class="panel_body">
        <ul class="list" id="list-1" name="element">
            <li class="element">Foo</li>
            <li class="element">Bar</li>
            <li class="element">Jay</li>
        </ul>
        <ul class="list list-small" id="list-2">
            <li class="element">Foo</li>
                <a href="https://www.baidu.com">百度官网</a>
            <li class="element">Bar</li>
        </ul>
    </div>
</div> 

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

from selenium.webdriver.common.by import By

# 获取第一个元素
browser.find_element(by=By.ID, value="list-1")
# 获取多个元素
browser.find_elements(by=By.ID, value="list-1")

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

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

        根据Xpath获取元素列表

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

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

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

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

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

        根据标签名获取元素列表

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

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

linalw

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

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

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

打赏作者

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

抵扣说明:

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

余额充值