Selenium是一个自动化测试工具,利用它可以模仿人类行为,如点击、下滑、移动鼠标等,同时还能获取网页源码

相关链接:https://www.selenium.dev/

目录

1、准备工作

2、基本示范

3、功能介绍

4、信息获取

5、切换页面

1、准备工作

首先要确保安装好selenium库和对应浏览器的驱动,若没有安装可以参考前面的文章——爬虫开发环境部署

2、基本示范

这里用的是Chrome浏览器

from selenium import webdriverbrowser = webdriver.Chrome()
browser.get('https://www.baidu.com')
browser.quit()    # 退出

运行代码后会弹出一个百度的页面

如果你用的发其他浏览器,比如Firefox就可以这样写

browser = webdriver.Firefox()

3、功能介绍

  • 3.1、请求网站

get()方法请求网站,传入一个url即可,同时我们可以调用page_source获取源码

from selenium import webdriverbrowser = webdriver.Chrome()
browser.get('https://www.baidu.com')
print(browser.page_source)  # 获取网页源码
browser.quit()  # 退出

  • 3.2、单个节点查找

我们查找一下百度的输入框

我们可以看到这个input标签内有哪些内容class、id、name,我们可以通过这些来定位这个位置,当然也可以根据css、xpath来查找

from selenium import webdriverbrowser = webdriver.Chrome()
browser.get('https://www.baidu.com')
a = browser.find_element_by_class_name('s_ipt')
b = browser.find_element_by_id('kw')
c = browser.find_element_by_xpath('//input[@class="s_ipt"]')
browser.quit()  # 退出
print(a)
print(b)
print(c)输出结果:
<selenium.webdriver.remote.webelement.WebElement (session="3a9746646e68a7e5ddb24304cbd6c705", element="fa252264-5131-42a3-ac27-b393d51867c1")>
<selenium.webdriver.remote.webelement.WebElement (session="3a9746646e68a7e5ddb24304cbd6c705", element="fa252264-5131-42a3-ac27-b393d51867c1")>
<selenium.webdriver.remote.webelement.WebElement (session="3a9746646e68a7e5ddb24304cbd6c705", element="fa252264-5131-42a3-ac27-b393d51867c1")>

我们可以发现都是一样的

find_element_by_class_name()是根据class属性查找find_element_by_id()就是根据id来查找

这里列出所有定位单个节点的方法,大家可以根据自己的习惯来选择

  • 3.3、节点交互

这里介绍几个常用的功能:点击、输入文本、清空文本

点击用click(),输入文本用send_keys(),清楚文本用clear()

示例:

这里用百度搜索爬虫

首先是要找到输入框所在的HTML位置

我们可以轻松的找到它,在class为s_ipt的input标签下

输入文本

browser.find_element_by_class_name('s_ipt').send_keys('爬虫')

清空文本

中间加个sleep,可以清楚看到全过程

browser.find_element_by_class_name('s_ipt').send_keys('爬虫')
time.sleep(1)
browser.find_element_by_class_name('s_ipt').clear()

最后点击百度一下

browser.find_element_by_id('su').click()

4、信息获取

  • 4.1、属性获取

既然可以定位节点那也可以获取节点的属性,可以调用get_attribute()

用上一个案例中的百度一下的按钮吧

from selenium import webdriverbrowser = webdriver.Chrome()
browser.get('https://www.baidu.com')
a = browser.find_element_by_id('su')
print(a.get_attribute('class'))
browser.quit()  # 退出运行结果:
bg s_btn
对比一下,一模一样

  • 4.2、获取文本

文本在class=“title”的span标签内

from selenium import webdriverbrowser = webdriver.Chrome()
browser.get('https://www.baidu.com')
a = browser.find_element_by_class_name('title')
print(a.text)
browser.quit()  # 退出运行结果:
下载百度APP

咦,怎么回事呢?

在网页源码中class=“title”的标签不唯一,但是它只会返回第一个符合条件的。那现在怎么办呢?用xpath定位,右键点击标签可以直接copy XPath规则

from selenium import webdriverbrowser = webdriver.Chrome()
browser.get('https://www.baidu.com')
a = browser.find_element_by_xpath('//*[@id="s_icons"]/a[2]/span[2]')
print(a.text)
browser.quit()  # 退出

但是直接报错了,原来是我打开的百度与驱动器打开的百度设置不同。这里就用驱动器打开的百度调试就好了。

这就对上了

5、切换页面

第一次打开百度一下的页面,第二次新建一个页面打开知乎的官网

from selenium import webdriverbrowser = webdriver.Chrome()
browser.get('https://www.baidu.com')
browser.execute_script('window.open()')
browser.switch_to.window(browser.window_handles[1])
browser.get('https://www.zhihu.com/signin?next=%2F')
browser.quit()  # 退出

execute_script('window.open()')这个命令就是打开一个新的选项卡,switch_to.window()是切换到某个选项卡,这里是切换到第二个选项卡

selenium threading运行后退出_Selenium的使用相关推荐

  1. Docker容器运行后退出,怎么才能一直运行?

    现象 启动docker容器      docker run –name [CONTAINER_NAME] [CONTAINER_ID] 查看容器运行状态      docker ps -a 发现刚刚启 ...

  2. python 直接退出程序_python 退出程序 Python程序运行后直接退出

    python中exit(0)和exit(1)的用法和区别, exit(0):表示程序正常退出. exit(1):表示程序异常退出. 二.特点不同 exit(0):把exit用在main内的时候无论ma ...

  3. Selenium之运行效果展示

    Selenium之运行效果展示 接下来主要学习selenium自动化测试框架在爬虫中的应用,selenium能够大幅降低爬虫的编写难度,但是也同样会大幅降低爬虫的爬取速度.(selenium可用于爬虫 ...

  4. 图像形态学(opencv),运行后通过在屏幕上输入对应指令完成相对应的形态学方法。

    图像形态学 1.开操作(MORPH_OPEN) 结果图类似腐蚀图 先腐蚀后膨胀的过程,开操作可以帮助消除图像中的小的干扰区域,并且在平滑较大物体的边界的同时不明显改变其面积. 2.闭操作(MORPH_ ...

  5. Snipaste在Window运行后遇到提示计算机中丢失 api-ms-win-crt-runtime-l1-1-0.dll 错误

    故障排除 以下为运行 Snipaste 可能遇到的错误及其解决方案. Windows 运行后遇到提示计算机中丢失 api-ms-win-crt-runtime-l1-1-0.dll 错误 请根据你操作 ...

  6. 互联网早报 | 10月3日 星期六 | 微信正式上线青少年模式;阿里巴巴首次披露技术研发投入;本田宣布2021赛季后退出F1...

    今日看点 ✦ 微信iOS最新版上线青少年模式,开启后"摇一摇""附近的人"将不可访问 ✦ 腾讯云自研星星海服务器成爆款云产品:规模增长30倍,客户增长50倍 ✦ ...

  7. Vim修改vimrc一键编译运行后出现请按 ENTER 或其它命令继续

    在~/.vimrc中修改配置使得用F5可以一键编译运行后, 出现了"请按 ENTER 或其它命令继续"的提示, 很不美观, 用silent可以解决这个问题 原本配置 参考https ...

  8. linux vi查看后退出命令,Linux下使用vi命令后退出方式

    退出Vi 当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一. 在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell:若当前编辑的 ...

  9. html5画布显示不出来,运行后html5画布没出来

    源自:3-9 使用前端界面调用flask发布的ckpt模型(2) 运行后html5画布没出来 不知道什么原因, 运行后html5画布没出来,跪求解答,谢谢 FLASK_APP = main.py FL ...

最新文章

  1. 别让低效努力,毁了你
  2. jmeter获取时间_time 函数
  3. 图像拾取点_10分钟看懂Photoshop 照片修饰(用“消失点”滤镜编辑照片)
  4. vue学习:7、路由跳转
  5. b站2020用户画像_B站2020年度动画大选来袭!论引战,还是要看B站
  6. mysql bin 恢复工具_基于binlog恢复工具mysqlbinlog_flashback
  7. Java库转oc_急急急!各位大神:一段JAVA代码转成OC代码。
  8. 谨慎设计方法签名(40)
  9. 会安装oracle数据库吗,搭建安装oracle数据库
  10. C语言小游戏 源码 推箱子
  11. wps 英文版_为什么现在我会推荐使用wps?
  12. 深度学习之 RBF神经网络
  13. 设置华表Cell插件外观时的“闪烁”问题
  14. 计算机装系统找不到硬盘,安装系统找不到硬盘怎么办
  15. 腾讯web引用skey g_tk bkn和日期显示分析
  16. Python 汉字转拼音库 pypinyin, 附:汉字拼音转换工具
  17. python读取word文档并做简单的批量文档筛选
  18. 我辛辛苦苦做了一个月的项目,组长年底用来写了晋升PPT
  19. python处理停用词(stopwords)
  20. 如何改typecho主题头像_一个比较免费又漂亮的typecho主题-Akina for Typecho

热门文章

  1. BZOJ 2456 mode
  2. linux 修改网卡mac,Linux修改 网卡物理地址(Mac Address)
  3. 数据仓库--基本概念
  4. 事件 绑定,取消冒泡,拖拽 ,点击,事件委托习题
  5. day60 Pyhton 框架Django 03
  6. Linux系统下 Apache+PHP 环境安装搭建
  7. 三大趋势在移动互联网发展
  8. Fedora20 优化体验
  9. Doc命令收集(一)
  10. (转)iOS 6的Rotation--详细版本