热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

selenium自动化模块的应用

一、selenium概念1、用来完成浏览器自动化的相关操作2、使用程序编写一系列的键盘、鼠标的相关操作(让浏览器来完成),当我们执行代码时,就会触发一系列的事件二、selenium

一、selenium概念

  1、用来完成浏览器自动化的相关操作

  2、使用程序编写一系列的键盘、鼠标的相关操作(让浏览器来完成), 当我们执行代码时,就会触发一系列的事件

二、selenium在爬虫中的作用

  1、可以获取动态加载的数据

三、selenium安装

  1、pip install selenium

  2、下载浏览器驱动程序: http://chromedriver.storage.googleapis.com/index.html (找到最接近的版本)

四、selenium使用

  1、导包: from selenium import webdriver

  2、实例化某一款浏览器的驱动,获取一个对象

  3、使用对象中的相关方法制定一系列的事件(键盘、鼠标的相关操作)

五、简单案例,打开百度

from selenium import webdriver

bro = webdriver.Chrome(executable_path=./chromedriver.exe)
bro.get("https://www.baidu.com")

bro.close()

六、自动打开百度,搜素刘德华

# 百度搜索刘德华案例
import time
from selenium import webdriver

bro = webdriver.Chrome(executable_path=./chromedriver.exe)
bro.get("https://www.baidu.com")

# 1. 定位到输入框
kw = bro.find_element_by_id("kw")

# 2. 键入刘德华关键字
kw.send_keys("刘德华")
time.sleep(5)

# 3. 定位到"百度一下"按钮
input_key = bro.find_element_by_id("su")

# 4. 触发点击事件
input_key.click()
time.sleep(5)

bro.close()

七、爬取雪球网

from selenium import webdriver

bro = webdriver.Chrome(./chromedriver.exe)
bro.get(https://xueqiu.com)


# 获取动态加载的数据
print(bro.page_source)

bro.quit()

八、爬取雪球网的更多数据

import time
from selenium import webdriver

bro = webdriver.Chrome(./chromedriver.exe)
bro.get(https://xueqiu.com)

js = "window.scrollTo(0, document.body.scrollHeight)" # 表示滚轮往下拖动一屏的高度

bro.execute_script(js)
time.sleep(2)

bro.execute_script(js)
time.sleep(2)

bro.execute_script(js)
time.sleep(2)

bro.execute_script(js)
time.sleep(2)

# 获取动态加载的数据
print(bro.page_source)

bro.quit()

九、谷歌无头浏览器

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 创建一个参数对象,用来控制chrome以无界面模式打开
chrome_optiOns= Options()
chrome_options.add_argument(--headless)
chrome_options.add_argument(--disable-gpu)


bro = webdriver.Chrome(executable_path=./chromedriver.exe, chrome_optiOns=chrome_options)
bro.get("https://www.baidu.com")

# 截图
bro.save_screenshot(3.jpg)

# 1. 定位到输入框
kw = bro.find_element_by_id("kw")

# 2. 键入刘德华关键字
kw.send_keys("刘德华")
time.sleep(2)

# 3. 定位到"百度一下"按钮
input_key = bro.find_element_by_id("su")

# 4. 触发点击事件
input_key.click()
# 截图
bro.save_screenshot(4.jpg)
time.sleep(2)

bro.close()

十、前进和后退

import time
from selenium import webdriver

bro = webdriver.Chrome(executable_path=./chromedriver.exe)

# 注意: bro对象只有将页面完全加载完成之后,才会进行下一步的事件触发
bro.get("https://www.baidu.com")
bro.get("https://www.taobao.com")
bro.get("https://www.jd.com")
time.sleep(2)

# 后退
bro.back()
time.sleep(2)

# 前进
bro.forward()
time.sleep(2)

bro.close()

十一、动作链。拖动iframe标签

import time
from selenium import webdriver
from selenium.webdriver import ActionChains

bro = webdriver.Chrome(executable_path=./chromedriver.exe)
bro.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")

# 定位到页面中的iframe标签内部,这样才可以定位到它内部的标签
bro.switch_to.frame("iframeResult")

# 实例化一个动作链对象,将浏览器对象加载到这个动作链对象中
actiOns= ActionChains(bro)
# 1. 定位“请拖拽我”标签
source_tag = bro.find_element_by_id("draggable")
# 2. 点击“请拖拽我”, 并拖动
actions.click_and_hold(source_tag)

for i in range(1, 6):
    actions.move_by_offset(50,0)
    time.sleep(1)

actions.perform()  # 执行所有动作链

time.sleep(2)

bro.close()

十二、动作链,拖动iframe标签到指定的地方

import time
from selenium import webdriver
from selenium.webdriver import ActionChains

bro = webdriver.Chrome(executable_path=./chromedriver.exe)
bro.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")

# 定位到页面中的iframe标签内部,这样才可以定位到它内部的标签
bro.switch_to.frame("iframeResult")

# 实例化一个动作链对象,将浏览器对象加载到这个动作链对象中
actiOns= ActionChains(bro)
# 1. 定位“请拖拽我”标签
source_tag = bro.find_element_by_id("draggable")
target_tag = bro.find_element_by_id(droppable)

# 点击并拖动,并丢弃
actions.click_and_hold(source_tag)
for i in range(1, 6):
    actions.move_by_offset(30,0)
    time.sleep(1)
actions.drag_and_drop(source_tag, target_tag)

actions.perform()  # 执行所有动作链

bro.close()

十三、获取COOKIE

from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions

option = ChromeOptions()
option.add_experimental_option(excludeSwitches, [enable-automation])

browser = webdriver.Chrome(./chromedriver.exe, optiOns=option)
browser.get(https://www.baidu.com)
print(browser.get_COOKIEs())

# browser.add_COOKIE({‘name‘: ‘name‘, ‘domain‘: ‘www.zhihu.com‘, ‘value‘: ‘germey‘})
# print(browser.get_COOKIEs())

# browser.delete_all_COOKIEs()
# print(browser.get_COOKIEs())

selenium自动化模块的应用


推荐阅读
  • npmimportuse这里我记录一下,视频地址和封面地址均引用的是服务器端得,本地的视频和图片 ... [详细]
  • UDP协议开发
    UDP是用户数据报协议(UserDatagramProtocol,UDP)的简称,其主要作用是将网络数据流量压缩成数据报形式,提供面向事务的简单信息传送服务。与TCP协议不同,UD ... [详细]
  • 第38天:Python decimal 模块
    by程序员野客在我们开发工作中浮点类型的使用还是比较普遍的,对于一些涉及资金金额的计算更是不能有丝毫误差,Python的decimal模块为浮点型精确计算提供了支持。1简介deci ... [详细]
  • ARToolKitunity
    ARToolKit为开源的AR库,相对于高通和easyAr有几点特点:1)开源2)识别项目可以动态添加(详细在后)3)识别文件可以本地生成4)目前只能识别图片(目前为.jpg格式) ... [详细]
  • Java工作流引擎关于数据加密流程(MD5数据加密防篡改)
    关键字:驰骋工作流程快速开发平台工作流程管理系统工作流引擎asp.net工作流引擎java工作流引擎.开发者表单拖拽式表单工作流系统流程数据加密md5数据保密流程数据防篡改软加密适 ... [详细]
  • 【实践】基于RTThread的智慧路灯案例实验分享
    之前分享了基于LiteOS的智慧农业案例实验分享基于LiteOS的智慧农业案例实验分享,阅读量挺不错,看样子大家都挺喜欢这种实验。那咱们就再来一个类似的实验:基于RT-Thread ... [详细]
  • win10如何将现有的桌面壁纸找出来
    直接在地址栏输入“C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Themes”,将用户名替换为本机当前用户名,然后按下回车键即可。P ... [详细]
  • CentOS7.2详细安装步骤(二)
    7)语言设置(可以在上一个主界面进行设置,这里不用再次设置)8)SECURITY设置(安全设置)选择default(默认的)策略就可以,通过进行选择,单击完成即可Default#默 ... [详细]
  • SortalinkedlistinO(nlogn)timeusingconstantspacecomplexity.这道题属于人生中第一次对链表进行操作,首先,不同于C++中的st ... [详细]
  • Linux文件目录和权限
    Linux文件目录和权限前言:Linux一般将文件可存取的身份分为三个类别,分别是ownergroupothers,根据权限划分,每个目录都可以拥有相对身份的-rwx[可读可写可执 ... [详细]
  • Redis 外部访问设置
    1、错误原因Redis搭建好后一般都是使用编程语言进行连接调用,默认Redis的设置是不允许外界访问的,连接Redis只能通过本地(127.0.0.1)来连接,而不能使用网络IP( ... [详细]
  • 法国人家喻户晓的一首歌,很老的一首了。旋律轻盈,歌词温馨会把你带回到小时候的回忆中去。Ilrevientàmamémoire一切都回到我脑海中Dessouvenirsfamilie ... [详细]
  • 这篇文章将为大家详细讲解有关python爬虫中scrapy怎么处理项目数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有 ... [详细]
  • 第一部分:TSqlTop有两种用法1,限制查询结果集返回的行数或总行数的百分比。当将TOP与ORDERBY子句结合使用时,结果集限制为前N个已排序行;否则,以未定义的顺序返回前N个 ... [详细]
  • ExistsQueryeditExistsQueryeditExistsQueryeditExistsQueryeditReturnsdocumentsthathaveatleas ... [详细]
author-avatar
竹茹士弘宜来
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有