Selenium 框架学习使用

Selenium是一个强大的Web自动化测试工具,支持多种浏览器,如Chrome和PhantomJS。它允许直接调用浏览器进行操作,包括搜索、截图等,简化了爬虫编写,但可能降低爬取速度。文章介绍了Selenium的工作原理、使用方法,如元素定位、页面等待、无界面模式、代理设置等,并提供了相应的代码示例。

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

        selenium是一个web的自动化测试工具,可以直接调用浏览器,支持所有的主流浏览器。可以接收指令,理论上可以完成所有人为可以完成的操作。能够大幅降低爬虫编写难度,但会降低爬虫爬取速度。

使用方法:
        chrome使用方法(在百度中搜索python):
# 导入selenium中webdrivermokuai
from selenium import webdriver
# 未配置环境变量,设置driver环境变量,将driver绝对路径赋值
driver = webdriver.Chrome(executable_path='/D:/driver/chromedriver')

# 实例化
driver = webdriver.Chrome()

# 发送请求
driver.get('https://www.baidu.com/')

# 截图
driver.save_screenshot('picture.png')

# 搜索框元素find_element_by_id('kw')中使用send_keys赋予python值
driver.find_element_by_id('kw').send_keys('python')
# 点击搜索
driver.find_element_by_id('su').click()

# 退出浏览器
driver.quit()
                phantomjs使用方法:
# 导入selenium中webdriver模块
from selenium import webdriver
# 未配置环境变量,设置driver环境变量,将driver绝对路径赋值
driver = webdriver.Phantomjs(executable_path='/D:/driver/phantomjs')

# 实例化
driver = webdriver.Chrome()

# 发送请求
driver.get('https://www.baidu.com/')

# 截图
driver.save_screenshot('picture.png')

# 退出浏览器
driver.quit()
工作原理:

        利用浏览器原生API,封装成面向对象的Selenium WebDriver API ,直接操作浏览器(元素以及浏览器自身)

selenium提取数据:
        driver对象的常用属性和方法
  1.                 driver.page_source  当前标签页浏览器渲染之后的网页源代码
  2.                 driver.current_url  当前标签页url        
  3.                 driver.close() 关闭当前标签页,若标签页为一,则关闭浏览器
  4.                 driver.quit() 关闭浏览器
  5.                 driver.back()  网页后退
  6.                 driver.save_screenshot(img_name)  页面截图
         driver对象定位标签
  1.         find_element_by_id()                返回一个元素
  2.         find_element(s)_by_class_name        根据class名返回元素列表
  3.         find_element(s)_by_name        根据标签name值返回元素列表
  4.         find_element(s)_by_xpath        根据xpath返回元素列表
  5.         find_element(s)_by_css        根据css选择返回元素列表
  6.         find_element(s)_by_tag_name        根据标签名返回元素列表
  7.         find_element(s)_by_link_text        根据文本返回元素列表
  8.         find_element(s)_by_partial_link_text       根据链接所包含的文本返回元素列表‘’
        标签对象提取文本内容和属性值
# 导入selenium中webdriver模块
from selenium import webdriver
# 未配置环境变量,设置driver环境变量,将driver绝对路径赋值
driver = webdriver.Phantomjs(executable_path='/D:/driver/phantomjs')

# 实例化
driver = webdriver.Chrome()

# 发送请求
driver.get('https://www.baidu.com/')

# 定位h2标签
ret = driver.find_elements_by_tag_name('h2')
# 输出neirong
ret_t = ret[0].text

# 定位标签
ret = driver.find_elements_by_link_text('文本')
# 输出属性href
ret_t = ret[0].get_attribute('href')

# 退出浏览器
driver.quit()
  selenium其他使用方法
        selenium标签页切换
# 导入selenium中webdriver模块
from selenium import webdriver
# 未配置环境变量,设置driver环境变量,将driver绝对路径赋值
driver = webdriver.Phantomjs(executable_path='/D:/driver/phantomjs')

# 实例化
driver = webdriver.Chrome()

# 发送请求
driver.get('https://www.baidu.com/')

# 获取当前所有标签页列表
currrnt_windows = driver.window_handles

# 根据索引,切换
driver.switch_to.windows(currrnt_windows[0])

# 关闭浏览器
driver.quit()
        switch_to切换frame标签
# 导入selenium中webdriver模块
from selenium import webdriver
# 未配置环境变量,设置driver环境变量,将driver绝对路径赋值
driver = webdriver.Phantomjs(executable_path='/D:/driver/phantomjs')

# 实例化
driver = webdriver.Chrome()

# 发送请求
driver.get('https://www.baidu.com/')

# 根据ID,切换
driver.switch_to.frame('id')

# 关闭浏览器
driver.quit()
  selenium处理cookie
# 导入selenium中webdriver模块
from selenium import webdriver
# 未配置环境变量,设置driver环境变量,将driver绝对路径赋值
driver = webdriver.Phantomjs(executable_path='/D:/driver/phantomjs')

# 设置URL
url = 'https://www.baidu.com/'
# 实例化
driver = webdriver.Chrome()

# 发送请求
driver.get(url)

# 获取cookies
driver.get_cookies()

# cookies转字典
cookies = {}
for data in driver.get_cookies():
    cookies[data['name']] = data['value']

# 删除某一条cookies
driver.delete_cookie("Cookiename")

# 删除所有cookies
driver.delete_all_cookies()

# 关闭浏览器
driver.quit()
  selenium执行js代码
# 导入selenium中webdriver模块
from selenium import webdriver
# 未配置环境变量,设置driver环境变量,将driver绝对路径赋值
driver = webdriver.Phantomjs(executable_path='/D:/driver/phantomjs')

# 设置URL
url = 'https://www.baidu.com/'
# 实例化
driver = webdriver.Chrome()

# 发送请求
driver.get(url)

# 设置js
js = '' #js语句

#执行js
driver.exectue_script(js)

# 关闭浏览器
driver.quit()
selenium页面等待

        页面加载中,需要等待服务器响应,需要通过页面等待进行加载

        等待分类:
                强制等待:

                        time.sleep()

                        缺点:智能化低

                隐式等待:

                        针对元素进行等待,根据设置时间进行等待

# 导入selenium中webdriver模块
from selenium import webdriver
# 未配置环境变量,设置driver环境变量,将driver绝对路径赋值
driver = webdriver.Phantomjs(executable_path='/D:/driver/phantomjs')

# 设置URL
url = 'https://www.baidu.com/'
# 实例化
driver = webdriver.Chrome()

# 设置等待,最长等待时间20秒
driver.implicitly_wait(5)

# 发送请求
driver.get(url)

# 定位元素
driver.find_element_by_xpath()

# 关闭浏览器
driver.quit()
                显式等待(常用于软件测试):

                        每经过多少秒就查看一次条件是否达成

selenium开启无界面模式
        无头浏览器(部署)
driver = webdriver.PantomJS()
        有头浏览器(开发)
driver = webdriver.Chrome()
        开启无界面模式
# 导入selenium中webdriver模块
from selenium import webdriver
# 未配置环境变量,设置driver环境变量,将driver绝对路径赋值
driver = webdriver.Phantomjs(executable_path='/D:/driver/phantomjs')

# 设置URL
url = 'https://www.baidu.com/'

# 创建配置对象
opt = webdriver.ChromeOptions()

# 添加配置参数
opt.add_argument('--headless')
opt.add_argument('--disable-gpu')

# 实例化
driver = webdriver.Chrome(chrome_options = opt)

# 发送请求
driver.get(url)

# 关闭浏览器
driver.quit()
selenium使用IP代理
# 导入selenium中webdriver模块
from selenium import webdriver
# 未配置环境变量,设置driver环境变量,将driver绝对路径赋值
driver = webdriver.Phantomjs(executable_path='/D:/driver/phantomjs')

# 设置URL
url = 'https://www.baidu.com/'

# 创建配置对象
opt = webdriver.ChromeOptions()

# 添加配置IP参数
opt.add_argument('--proxy-server=http://ip')

# 实例化
driver = webdriver.Chrome(chrome_options = opt)

# 发送请求
driver.get(url)

# 关闭浏览器
driver.quit()
selenium更换用户代理
# 导入selenium中webdriver模块
from selenium import webdriver
# 未配置环境变量,设置driver环境变量,将driver绝对路径赋值
driver = webdriver.Phantomjs(executable_path='/D:/driver/phantomjs')

# 设置URL
url = 'https://www.baidu.com/'

# 创建配置对象
opt = webdriver.ChromeOptions()

# 更换user-agent
opt.add_argument('--user-agent=')

# 实例化
driver = webdriver.Chrome(chrome_options = opt)

# 发送请求
driver.get(url)

# 关闭浏览器
driver.quit()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值