selenium基本使用、无头浏览器(chrome、FireFox)、搜索标签

selenium基本使用

这个模块:既能发请求,又能解析,还能执行js

selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行
JavaScript代码的问题

  1. selenium 会做web方向的自动化测试
  2. appnium 会做 app方向的自动化测试

selenium 可以操作浏览器,模拟人的 行为

使用浏览器

  1. 下载浏览器驱动(chrome):

    • https://registry.npmmirror.com/binary.html?path=chromedriver/
    • https://googlechromelabs.github.io/chrome-for-testing/
    • https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/119.0.6045.105/win64/chromedriver-win64.zip
    • 火狐驱动:https://github.com/mozilla/geckodriver/releases/
    • 跟浏览器型号和版本一一对应的
      ie,火狐,谷歌:谷歌为例
      谷歌浏览器有很多版本:跟版本一一对应
  2. 将驱动放到python解释器目录下,或者配置环境变量

  3. 下载模块:pip install selenium

  4. 写python代码,操作浏览器

import time
from selenium import webdriver# 跟人操作浏览器一样,打开了谷歌浏览器,拿到浏览器对象
bro=webdriver.Firefox()# 在地址栏中输入地址
bro.get('https://www.baidu.com')
time.sleep(5)
bro.close()

指令

bro为实例化所得对象

  1. 在地址栏中输入地址:bro.get('网址地址')
  2. 关闭浏览器:bro.close()
  3. 设置等待:bro.implicitly_wait(10),从页面中找标签,如果找不到,就等待
  4. 页面最大化:bro.maximize_window()
  5. 当前页面html内容:bro.page_source)
  6. 选择器:
    from selenium.webdriver.common.by import By
    • 找一个:bro.find_element(by=By.选择器,value='')
    • 找所有:bro.find_elements(by=By.选择器,value='')
  7. 点击:找到的标签.click()
  8. 文本框写入:找到的标签.send_keys()

模拟登录

from selenium import webdriver
from selenium.webdriver.common.by import Bybro = webdriver.Firefox()
bro.get('https://www.baidu.com')
bro.implicitly_wait(10)
bro.maximize_window()# 找到登录按钮
a_login = bro.find_element(by=By.LINK_TEXT, value='登录')
a_login.click()# 往输入框中写文字
username = bro.find_element(by=By.ID, value='TANGRAM__PSP_11__userName')
username.send_keys('13437238745')
password = bro.find_element(by=By.ID, value='TANGRAM__PSP_11__password')
password.send_keys('caimina1')agree = bro.find_element(By.ID, 'TANGRAM__PSP_11__isAgree')
agree.click()submit = bro.find_element(By.ID, 'TANGRAM__PSP_11__submit')
submit.click()bro.close()

selenium其它用法

无头浏览器(chrome浏览器)

如果我们做爬虫,我们只是为了获取数据,不需要非有浏览器在显示 ⇢ \dashrightarrow 隐藏浏览器图形化界面

chrome
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
chrome_options.add_argument('--headless') #浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
bro = webdriver.Chrome(options=chrome_options)bro.get('https://www.cnblogs.com/liuqingzheng/p/16005896.html')print(bro.page_source)
time.sleep(3)
bro.close()
FireFox
from selenium import webdriveroptions = webdriver.FirefoxOptions()
options.add_argument("--headless")  # 设置火狐为headless无界面模式
options.add_argument("--disable-gpu")
driver = webdriver.Firefox(options=options)
driver.get("https://www.qq.com")
print(driver.page_source)
driver.close()

搜索标签

搜索标签
  1. 根据id号查找标签:
  2. 根据name属性查找标签:
  3. 根据标签查找标签:
  4. 按类名找:
  5. a标签文字:
  6. a标签文字,模糊匹配:
  7. 按css选择器找:
  8. 按xpath找:
获取标签的属性,文本,大小,位置
  1. 属性:bro.get_attribute('src')
  2. 文本:bro.text
  3. 大小:tag.size
  4. 位置:bro.location
  5. id(不是标签id,无需关注):tag.id
  6. 标签名:tag.tag_name
找到页面中所有div
divs=bro.find_elements(By.TAG_NAME,'div')
按类名找
div=bro.find_element(By.CLASS_NAME,'postDesc').text
按css选择器
div=bro.find_element(By.CSS_SELECTOR,'div.postDesc').text#id为topics下的div下的div中类为postDesc
div=bro.find_element(By.CSS_SELECTOR,'#topics > div > div.postDesc').text

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/140711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用迁移学习在线校准深度学习模型

使用迁移学习在线校准深度学习模型 本文参考的是2023年发表于Engineering Applications of Artificial Intelligence, EAAI的Deep Gaussian mixture adaptive network for robust soft sensor modeling with a closed-loop calibration mechanism 1. 动机 概念漂移导致历史训…

SpringBoot--中间件技术-1:任务管理,异步任务,任务调度,发邮件Mail的实现,含代码

SpringBoot中的事务管理 关键注解: 设置事务(声明事务管理),写在业务层的方法上: Transactional(isolation Isolation.DEFAULT) Transactional(propagation Propagation.REQUIRED) 开启事务,设置在启动…

# Oracle 库常见问题排查

Oracle 库常见问题排查 文章目录 Oracle 库常见问题排查查询数据库的相关信息查看正在执行的语句杀掉正在执行的sql查看未提交的事务查看锁表 查询数据库的相关信息 查看正在执行的语句 SELECT s.sid, s.serial#, s.username, s.status, s.sql_id, s.sql_child_number, sq.sq…

React 共享组件状态及其实践

React 是一个强大的JavaScript库,它提供了一种简单的方式来构建用户界面。然而,随着应用规模的增长,状态管理成为一个复杂的问题。本篇文章将深入探讨如何在React组件之间共享状态。 状态提升 首先,我们来谈谈"状态提升&qu…

完全免费!超好用的IDEA插件推荐:Apipost-Helper

Idea 是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展,可以根据开发人员的需要进行定制和扩展,从而提高开发效率,今天我们就来介绍一款国产的…

使用Java实现一个简单的贪吃蛇小游戏

一. 准备工作 首先获取贪吃蛇小游戏所需要的头部、身体、食物以及贪吃蛇标题等图片。 然后,创建贪吃蛇游戏的Java项目命名为snake_game,并在这个项目里创建一个文件夹命名为images,将图片素材导入文件夹。 再在src文件下创建两个包&#xff0…

正点原子嵌入式linux驱动开发——Linux DAC驱动

上一篇笔记中学习了ADC驱动,STM32MP157 也有DAC外设,DAC也使用的IIO驱动框架。本章就来学习一下如下在Linux下使用STM32MP157上的DAC。 DAC简介 ADC是模数转换器,负责将外界的模拟信号转换为数字信号。DAC刚好相反,是数模转换器…

在node中实现高效率、低内存的excel/JSON转换

在node中实现高效率、低内存的excel/JSON转换 在nodejs中不使用过多内存的情况下,将大型excel文件转换为json格式是一个非常常见的需求,因为它可以更容易地处理和共享数据。在这篇文章中,我们将探讨如何完成这个需求,提供一个逐步…

Mac电脑Visio文件编辑查看软件推荐Visio Viewer for Mac

mac版Visio Viewer功能特色 在Mac OS X上查看Visio绘图和图表 在Mac OS X上轻松查看MS Visio文件 在Mac上快速方便地打开并阅读Visio文件(.vsd,.vsdx)。 支持通过放大,缩小,旋转,文本选择和复制&#xff0…

群晖Docker(Container Manager)中安装Home Assistant Container

群晖Docker(Container Manager)中安装Home Assistant Container 不要使用 套件里面的 Home Assistant,不利于后期拓展 方式一: docker run -d --name"home-assistant-1" -v /volume1/docker/homeassistant/config:/c…

秋招求职经验分享

0.个人简介 2023年10月底,最终拿到了海康威视、汇川技术等十余家公司的Offer,最终签了自己心仪的Offer,秋招对我来说算是正式结束了,写个博客纪念一下,顺便分享以下秋招的经验,为后来人求职提供一些参考。…

华东“启明”青少年音乐艺术实践中心揭幕暨中国“启明”巴洛克合奏团首演音乐会

2023年11月11日,华东“启明”青少年音乐艺术实践中心在上海揭幕,中国“启明”巴洛克合奏团开启了首场音乐会。 华东“启明”青少年音乐艺术实践中心由中共宁波市江北区委宣传部与上音管风琴艺术中心联合指导,宁波音乐港、宁波市江北区洛奇音乐…

Apache APISIX 的 Admin API 默认访问令牌漏洞(CVE-2020-13945)漏洞复现

漏洞描述 Apache APISIX 是一个动态、实时、高性能的 API 网关。Apache APISIX 有一个默认的内置 API 令牌,可用于访问所有 admin API,通过 2.x 版本中添加的参数导致远程执行 LUA 代码。 漏洞环境及利用 启动docker环境 访问9080端口 通过 admin api…

利用LangChain实现RAG

检索增强生成(Retrieval-Augmented Generation, RAG)结合了搜寻检索生成能力和自然语言处理架构,透过这个架构,模型可以从外部知识库搜寻相关信息,然后使用这些信息来生成response。要完成检索增强生成主要包含四个步骤…

Java进阶(垃圾回收GC)——理论篇:JVM内存模型 垃圾回收定位清除算法 JVM中的垃圾回收器

前言 JVM作为Java进阶的知识,是需要Java程序员不断深度和理解的。 本篇博客介绍JVM的内存模型,对比了1.7和1.8的内存模型的变化;介绍了垃圾回收的语言发展;阐述了定位垃圾的方法,引用计数法和可达性分析发以及垃圾清…

GetPrivateProfileSection使用

基本语法 GetPrivateProfileSection 是一个 Windows API 函数,用于检索指定 INI 文件中特定节的所有键值对。它可以读取INI文件中指定节所有的键值对并将结果存储在指定的缓冲区中。 以下是 GetPrivateProfileSection 函数的基本语法: DWORD GetPriva…

如何实现Debian工控电脑USB接口安全管控

Debian 作为工控电脑操作系统具有稳定性、安全性、自定义性和丰富的软件包等优势,适用于要求高度可靠性和安全性的工控应用。 Debian 作为工控电脑操作系统在工业控制领域有很大优势,包括: 稳定性:Debian 的发布版以其稳定性而闻…

find和grep命令的简单使用

find和grep命令的简单使用 一、find例子--不同条件查找 二、grep正则表达式的简单说明例子--简单文本查找例子--结合管道进行查找 一、find find 命令在指定的目录下查找对应的文件。 find [path] [expression]● path 是要查找的目录路径,可以是一个目录或文件名…

MS321V/358V/324V低压、轨到轨输入输出运放

MS321V/MS358V/MS324V 是单个、两个和四个低压轨到轨输 入输出运放,可工作在幅度为 2.7V 到 5V 的单电源或者双电源条件 下。在低电源、空间节省和低成本应用方面是最有效的解决方案。 这些放大器专门设计为低压工作( 2.7V 到 5V )…

Electron-vue出现GET http://localhost:9080/__webpack_hmr net::ERR_ABORTED解决方案

GET http://localhost:9080/__webpack_hmr net::ERR_ABORTED解决方案 使用版本解决方案解决总结 使用版本 以下是我解决此问题时使用的electron和vue等的一些版本信息 【附】经过测试 electron 的版本为 13.1.4 时也能解决 解决方案 将项目下的 .electron-vue/dev-runner.js…