行为链

1:什么是鼠标行为链

  • 鼠标行为链可以模仿鼠标的一些行为,比如可以双击、单击,右键。
  • 鼠标行为链简单来说就是,使用代码来模仿鼠标的一些动作

1.1:创建鼠标行为链的步骤

  • 1:需要添加一个类
from selenium.webdriver import ActionChains
  • 2:创建一个鼠标实例
  • 3:使用鼠标类里面的一些方法,对网页进行一些操作
  • 4:提交行为链

2:鼠标行为链的常用方法

2.1:在input标签里面输入内容

  • 代码:
actions.send_keys_to_element(input_tag, '北京')
  • 参数解释:
    • input_tag:搜索框的标签位置
    • 北京:要在输入框中输入的内容
  • 返回值:在标签定位的输入框中输入,我们输入的数据

2.2:移动到指定标签的位置

  • 代码:
actions.move_to_element(button_tag)
  • 参数分析:
    • button_tag:要移动到指定位置的标签
  • 返回值:鼠标移动到指定的位置

2.3:获取网页的源码数据

  • 代码:
print(driver.page_source)
  • 参数:无,因为这是一个方法
  • 返回值:返回一个网页的所有数据,既有静态数据,也有动态数据
selenium抓取数据的优势
  • selenium抓取网页数据的方式是以网页最终渲染的页面抓取的,也就是说,无论动态数据还是静态数据,都可以抓取

2.4:查找某一字符串是否存在

  • 作用:在html结构中,查找某一字符串是否存在,若存在则返回一个正整数,若不存在则返回一个-1
  • 代码:
print(driver.page_source.find('kw'))
  • 参数:
    • kw:要查找的标签名(字符名)
  • 返回值:一个正整数或者-1
  • 作用:在爬取有翻页功能的网页的时候可以翻找下一页

2.5: 获取节点的某一属性值

  • 作用:获取定位标签下面的一个属性值
  • 代码
img_tag = driver.find_element_by_xpath('//*[@id="app"]/div/div/div[1]/dl/dd[1]/a/img[2]')
print(img_tag.get_attribute('src'))
  • 参数解释:
    • img_tag:要获取属性值的标签
    • src:要获取的属性值
    • attribute:获取属性值的方法
  • 返回值:返回一个标签,指定的属性值

2.6:获取节点及其子节点的文本内容

  • 作用:返回这个节点及这个节点下面所有子节点的文本内容
  • 代码:
div.text
  • 参数:
    • div:要获取文档内容的标签
    • text:获取文档的方法
  • 返回值:返沪这个节点及这个节点下面所有子节点的文本内容

3:设置无界面格式

3.1:作用

  • 1:可以使程序快一点
  • 2:节省内存
  • 3:有的时候不需要打开交互的界面

3.2:设置步骤

  • 一定要在确定代码没有问题的情况下在设置无界面格式
  • 1:打开驱动的设置对象
    • options = webdriver.ChromeOptions()
  • 2:设置无界面格置
    • options.add_argument('--headless')
    • 死代码,记住就行了
  • 3:添加驱动,以关键字的形式添加到Chrome()中
    • driver = webdriver.Chrome(options=options)

4:页面等待

4.1:隐式等待

4.1.1:使用Python的time模块设置

  • 代码:
time.sleep(3)
...
  • 返回值:等待三秒后在执行后面的语句

4.1.2:使用selenium的隐式等待

  • 作用:在获取不可用的元素之前,会先等待10秒中的时间;如果获取了可用的元素,便会立刻执行下面的语句
  • 代码
driver.implicitly_wait(10)
...
  • 返回值:等待10秒之后,执行下面的代码

4.1.3:使用selenium的显示等待

  • 作用:显示等待是表明某个条件成立后才执行获取元素的操作。也可以在等待的时候指定一个最大的时间,如果超过这个时间那么就抛出一个异常

  • 注意:要先导入几个包

selenium.webdriver.support.excepted_conditions
selenium.webdriver.support.ui.WebDriverWait
  • 代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")

# 核心代码
element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"), '北京')
 )
  • 核心代码参数解释:
    • driver:在使用显示等待的时候需要使用一个驱动,driver就是这个驱动
    • 10:期望等待的时间,10秒
    • By.ID:使用什么方式来查找要定位的标签
    • myDynamicElement:使用** By.ID**要查询的标签名
  • 返回值:在id标签为myDynamicElement的参数为"北京"的时候立即执行后面的代码,如果不是,则回一直等待,知道10秒之后

5:拓展(操作多个窗口)

5.1:重复使用get()方法

  • 实现不了目的,因为重复操作多个get方法回造成网页的覆盖,最终只会打开最后打开的网页

5.2:使用driver.execute_script(‘window.open(“url”)’)方法

  • 可以实现目的,但是后来打开的网页只是单纯的打开,代码操作的还是第一个打开的网页

5.3:关闭打开的网页

  • 代码:使用close()方法就行
  • 作用:关闭最先打开的网页

5.4:切换打开的网页

  • 代码:
# 过时方法:在一些老的代码中可以看见
driver.switch_to_window(driver.window_handles[1])

# 流行方法:现在写的方法
driver.switch_to.window(driver.window_handles[1])
  • 注意:切换窗口的方式是以索引的方式切换的,窗口以打开的顺序先来后到,索引以0开始

5.5:打印一个网页的url

  • 代码
driver.current_url
  • 返回值:返回当前打开网页的url地址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值