【python】【爬虫】selenium模块快速介绍

Selenium模块虽然是一个web测试工具,但在爬虫中最有意思的功能就是可以模拟鼠标点击等操作。在前面的学习中,通过抓取button指向的地址模拟鼠标点击,但在selenium中直接模拟的即是点击的操作。

目录

调试

基本网页操作

通过属性定位标签

对标签的后续操作

模拟鼠标操作

补充

弹出的页面处理

等待页面加载


调试

安装了selenium模块后,还要安装浏览器对应的驱动才可以使用selenium。chrome对应驱动为ChromeDriver,Firefox对应geckodriver,注意驱动的版本和浏览器的版本是否适配,把下载的驱动放到python安装目录的Scripts目录下。以下为初始化样例。

from selenium import webdriver
# 初始化的参数中可以添加驱动的全地址,默认在scripts目录中
#driver = webdriver.Chrome('D:\Python\Scripts\chromedriver.exe') # 创建chrome浏览器对象
driver = webdriver.Firefox()    # 创建firefox浏览器对象
driver.get('https://www.baidu.com')  # 远程控制模式打开浏览器并访问百度

基本网页操作

get()向指定URL发送请求maximize_window()最大化窗口
current_url()返回当前网页URLget_cookies()获取当前网页的cookie
name返回当前浏览器驱动的名称title返回当前网页的标题
page_source获取当前网页源码current_window_handle获取当前网页的窗口
window_handles获取当前打开的所有网页窗口refresh()刷新当前网页
quit()关闭网页并退出驱动close()关闭当前网页
back()返回上一页

通过属性定位标签

函数中element代表返回满足条件的第一个标签,elements返回满足条件的所有标签

find_element_by_id()定位idfind_element_by_name()定位name
find_element_by_class_name()定位class,用 - 连接calss的多个值find_element_by_tag_name()定位标签名
find_element_by_link_text()精确定位链接find_element_by_partial_link_text()模糊定位链接(懒惰)
find_element_by_css_selector()CSS选择器定位find_element_by_xpath()XPath定位具体哪一个标签

为了方便使用,selenium中有一个By类封装了上述8种方法,只需调用find_element()或find_elements()传入两个参数即可。

from selenium import webdriver
from selenimu.webdriver.common.by import By
browser = webdriver.Firefox()
browser.get('http://www.baidu.com')
search1 = browser.find_element(By.ID, 'q')    # 定位ID属性为q的标签

对标签的后续操作

get_attribute('')获取标签中指定属性的值send_keys()标签赋值,可理解为输入框输入
is_selected()判断标签是否被选中tag_name()返回标签的名称
is_displayed()判断标签是否显示size返回标签大小
is_enabled()判断标签是否可用location返回标签位置坐标
text获取标签的文本内容

模拟鼠标操作

把实例化的WebDriver对象作为参数传入ActionChain对象进行实例化。ActionChain类中包含了鼠标的操作,调用这些操作函数后,操作传入一个队列中,通过调用perform()开始执行队列中的操作。通常定位好一个标签后再执行鼠标操作。【传入定位的元素作为参数】

点击类操作:

  1. clike()单击
  2. context_click()右击
  3. double_click()双击

按压操作:

click_and_hold()长按按钮,然后time.sleep()指定等待时间,最后release()释放按钮

拖动和移动:

drag_and_drop(source,target)模拟鼠标拖动的动作,soure为起点即需要拖动的元素,target为重点即该元素区域去到的位置

drag_and_drop_by_offset(),给出水平和垂直方向上的位移量,模拟用鼠标把目标拖动一定距离

悬停:

move_to_element()指定在定位到的元素上悬停


补充

弹出的页面处理

在网页操作的时候,例如点击登录的按钮时,会弹出一个<iframe>标签的窗口用于输入登录信息。<iframe>标签作为嵌套的子页面也有自己的body等标签。需要switch_to_frame()跳转到这个新页面再进行标签定位。(通过定位iframe的属性确定标签)

等待页面加载

time模块的sleep()方法提供了休眠等待的时间,但selenium模块提供了显示等待和隐式等待的方法。

显示等待【条件成立时再下一步操作】使用WebDriverWait类,传入WebDriver对象和超时时间,通过unti()l和until_not()判断条件,通过expected_conditions设置条件

from selenium import webdriver
from selenium.webdirver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
browser.get('http://www.taobao.com')
element = WebDriverWait(driver=browser, timeout=5).until(EC.presence_of_element_located((By.ID, 'q')))    #在等待时间找有无ID为q的博标签,没有返回false

隐式等待【超时时间】implicitly_wait()指定超时等待时间

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值