selenium

不同的浏览器使用各自不同的driver
代码统一调用webdriver操作浏览器

安装diiver
先查看浏览器版本
在这里插入图片描述

进入 https://registry.npmmirror.com/binary.html?path=chromedriver/ 下载相对应的chromedriver,当然这玩意还要配置需要将 chromedriver.exe 所在的目录设置为path环境变量中的路径

安装

pip install selenium

安装完成测试一下

import time
from selenium import webdriver

# 通过指定chromedriver的路径来实例化driver对象,chromedriver放在当前目录。
# driver = webdriver.Chrome(executable_path='./chromedriver')
# chromedriver已经添加环境变量
driver = webdriver.Chrome()

# 控制浏览器访问url地址
driver.get("https://www.baidu.com/")

# 在百度搜索框中搜索'python'
driver.find_element_by_id('kw').send_keys('python')
# 点击'百度搜索'
driver.find_element_by_id('su').click()

time.sleep(6)
# 退出浏览器
driver.quit()

driver对象的使用

语句作用
driver.page_soure返回渲染过后的原网页
driver.curr_url显示对应的url
driver.close()关闭当前标签页
driver.forward()页面前进
driver.back页面后退
driver.screen_shot(img_name)页面截图

元素定位

语句作用
1driver.find_element_by_xpath(" ")通过xpath定位
2driver.find_element_by_css_selector(" ")通过css选择器定位
3driver.find_element_by_name(" ")通过name属性值定位
4driver.find_element_by_class_name(" ")通过class属性值定位
5driver.find_element_by_link_text(" ")通过文本内容定位
6driver.find_element_by_partial_link_text(" ")通过部分文本内容定位
7driver.find_element_by_tag_name(" ")通过html标签进行定位如果有多个就返回第一个

在element后面可以加s表示匹配多个如果没有就会返回空列表

元素操作

操作作用
.text提取文字
.get_attribute(" ")提取属性值
.click()点击
.send_keys("")输入数据
.clear()对输入框清空

窗口切换

窗口的句柄
通过窗口句柄切换标签

x=driver.window_handles		#获取标签的所有句柄并返回列表
driver.switch_to.window(x[0])	#根据句柄切换窗口

frame是html中常用的一种技术,即一个页面中嵌套了另一个网页,selenium默认是访问不了frame中的内容的,对应的解决思路是driver.switch_to.frame( ) 括号填写小窗口的frame

cookie的操作

driver.get_cookies() 拿到cookie可以这样拿到cookie后使用requests模块
字典推导式

x={cookie['name']: cookie['value'] for cookie in driver.get_cookies()}

操作js

一般用于触发式
滚动条的拖动

js='scrollto(0,500)'	#js代码
driver.execute_script(js)	#操作js语句

页面等待

1.强制等待

time.sleep()

2.隐式等待
等待设置时间时间内会不断判断条件是否达成如果达成继续执行后续代码

driver.implicitly_wait(10)	# 会等待10秒钟期间不断查找

3.显示等待
明确等待,经过指定时间检测

配置对象

无头浏览器、代理、更换标识符

创建一个无头浏览器

driver=webdriver.PhantomJS()
from selenium import webdriver
url='http://www.qq.com'
#实例化对象
options = webdriver.ChromeOptions()
#配置对象开启无界面模式
options.add_argument("--headless")
#配置对象禁止gpu命令
options.add_argument("--disable-gpu")
#添加代理
options.add_argument("--proxy-server=http://175.24.112.3:7788")
#跟换浏览器标识
options.add_argument("--user-agent=Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Mobile Safari/537.36")
#创建浏览器对象时添加配置对象
driver = webdriver.Chrome(chrome_options=options)
#发起请求
driver.get(url)
#截图
driver.save_screenshot('123/baidu21.png')
#关闭浏览器
driver.quit()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值