selenium基本使用、无头浏览器(chrome、FireFox)、搜索标签
selenium基本使用
这个模块:既能发请求,又能解析,还能执行js
selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行
JavaScript代码的问题
- selenium 会做web方向的自动化测试
- appnium 会做 app方向的自动化测试
selenium 可以操作浏览器,模拟人的 行为
使用浏览器
-
下载浏览器驱动(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,火狐,谷歌:谷歌为例
谷歌浏览器有很多版本:跟版本一一对应
-
将驱动放到python解释器目录下,或者配置环境变量
-
下载模块:
pip install selenium -
写python代码,操作浏览器
import time
from selenium import webdriver# 跟人操作浏览器一样,打开了谷歌浏览器,拿到浏览器对象
bro=webdriver.Firefox()# 在地址栏中输入地址
bro.get('https://www.baidu.com')
time.sleep(5)
bro.close()
指令
bro为实例化所得对象
- 在地址栏中输入地址:
bro.get('网址地址') - 关闭浏览器:
bro.close() - 设置等待:
bro.implicitly_wait(10),从页面中找标签,如果找不到,就等待 - 页面最大化:
bro.maximize_window() - 当前页面html内容:
bro.page_source) - 选择器:
from selenium.webdriver.common.by import By- 找一个:
bro.find_element(by=By.选择器,value='') - 找所有:
bro.find_elements(by=By.选择器,value='')
- 找一个:
- 点击:
找到的标签.click() - 文本框写入:
找到的标签.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()
搜索标签
搜索标签
- 根据id号查找标签:
- 根据name属性查找标签:
- 根据标签查找标签:
- 按类名找:
- a标签文字:
- a标签文字,模糊匹配:
- 按css选择器找:
- 按xpath找:
获取标签的属性,文本,大小,位置
- 属性:
bro.get_attribute('src') - 文本:
bro.text - 大小:
tag.size - 位置:
bro.location - id(不是标签id,无需关注):
tag.id - 标签名:
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
相关文章:
selenium基本使用、无头浏览器(chrome、FireFox)、搜索标签
selenium基本使用 这个模块:既能发请求,又能解析,还能执行js selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行 JavaScript代码的问题 selenium 会做web方向的自动化测试appnium 会做 app方向的自动化…...
Html 引入element UI + vue3 报错Failed to resolve component: el-button
问题:Html 引入element UI vue3 ,el-button效果不出来 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><!-- import Vue before Element --> <!-- <script src"https://unpkg.com/vue2/dist…...
sen2cor安装
Sen2Cor工具安装教程-百度经验 (baidu.com)...
通付盾Web3专题 | SharkTeam:Web3安全实践与创新
在Web3领域,安全漏洞、黑客攻击已愈发成为用户和投资者重点关注的领域。如何保障加密资产的安全,Web3黑暗森林中又有哪些新的攻击模式产生,SharkTeam将从一线进行分享和讨论。 我们先来看一下2023年1月到8月的安全事件数量和损失的数据统计。…...
ARM Linux 基础学习 / Ubuntu 下的包管理 / apt工具
编辑整理 by Staok。 注:在 Github 上的原版文章日后可能会更新,在其它位置发的不会跟进。文章的 Gitee 仓库地址,Gitee 访问更流畅。 Ubuntu 下的包管理 / apt工具 包管理系统的功能和优点大致相同,但打包格式和工具会因平台&a…...
springcloudalibaba入门详细使用教程
目录标题 一、简介二、SpringCloud Alibaba核心组件2-1、Nacos (配置中心与服务注册与发现)2-2、Sentinel (分布式流控)2-3、RocketMQ (消息队列)/RabbitMq/kafka2-4、Seata (分布式事务)2-5、Dubbo (RPC) 三、为什么大家看好 Spring Cloud Alibaba3-1、阿里巴巴强大的技术输出…...
C# DirectoryInfo类的用法
在C#中,DirectoryInfo类是System.IO命名空间中的一个类,用于操作文件夹(目录)。通过DirectoryInfo类,我们可以方便地创建、删除、移动和枚举文件夹。本文将详细介绍DirectoryInfo类的常用方法和属性,并提供…...
IDEA常用快捷键大全(详解)
如何在IDEA中进行内容全局查找 在idea中进行全局查找,可以使用快捷键“Ctrl Shift F”或者在菜单栏中选择Edit > Find > Find in Path。在弹出的界面中,输入要查找的内容。如果“Ctrl Shift F”这个快捷键无法实现全局查找,可以尝…...
设计模式之解释器模式
阅读建议 嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议: 本篇文章大概5000多字,预计阅读时间长需要5分钟。本篇文章的实战性、理论性较强,是一篇质量分数较高的技术干货文章&#x…...
粉够荣获淘宝联盟区域理事会常务理事,携手共铸淘客新生态
淘宝联盟区域理事会于2021年成立,首届成立成都、广州、武汉,服务近2000个领军淘宝客企业,作为区域生态与官方交流重要枢纽,理事会举办近百场交流分享会,带动淘客跨域跨业态交流成长。 2023年9月7日第二届淘宝联盟理事…...
Python爬虫是否合法?
Python爬虫是否合法的问题颇具争议,主要涉及到使用爬虫的目的、操作方式以及是否侵犯了其他人的权益。本文将介绍Python爬虫的合法性问题,并提供一些相关的法律指导和最佳实践。 1. 什么是Python爬虫? Python爬虫是一种自动化程序ÿ…...
3.2 IDAPro脚本IDC常用函数
IDA Pro内置的IDC脚本语言是一种灵活的、C语言风格的脚本语言,旨在帮助逆向工程师更轻松地进行反汇编和静态分析。IDC脚本语言支持变量、表达式、循环、分支、函数等C语言中的常见语法结构,并且还提供了许多特定于反汇编和静态分析的函数和操作符。由于其…...
用python将csv表格数据做成热力图
python的开发者为处理表格和画图提供了库的支持,使用pandas库可以轻松完成对csv文件的读写操作,使用matplotlib库提供了画热力图的各种方法。实现这个功能首先需要读出csv数,然后设置自定义色条的各种属性如颜色,位置,…...
【程序基础】递归法
算法思想 递归法,其实可以说是一种编程技巧,通过调用自身,防止无限循环而给予递归出口。 思考使用场景 1.一个问题可以拆分成子问题,每个子问题相互独立。 2.数据满足递推关系,或者数据结构满足,例如图&…...
AI 绘画 | Stable Diffusion WebUI的基本设置和插件扩展
前言 Stable Diffusion WebUI是一个基于Gradio库的浏览器界面,用于配置和生成AI绘画作品,并且进行各种精细地配置。它支持目前主流的开源AI绘画模型,例如NovelAI/Stable Diffusion。 在基本设置方面,Stable Diffusion WebUI的默…...
如何用自然语言 5 分钟构建个人知识库应用?我的 GPTs builder 尝试
开发者的想象力闸门一旦打开,迎接我们的必然是目不暇接的 AI 应用浪潮冲击。 兴奋 早晨,我突然发现 ChatGPT 最新的 Create GPTs 功能可以用了。 这太让我意外了,没想到这么快。根据页面上的提示,我一直以为还得等上一周左右。于是…...
rabbitmq启动异常解决
如果 RabbitMQ 节点一直停在 "Stopping and halting node" 阶段,可能是由于一些原因导致节点无法正常停止。以下是一些建议的步骤,以尝试解决此问题: 手动强制终止节点: 尝试使用 rabbitmqctl 命令手动终止节点。在终端…...
OpenGL_Learn08(坐标系统与3D空间)
目录 1. 概述 2. 局部空间 3. 世界空间 4. 观察空间 5. 剪裁空间 6. 初入3D 7. 3D旋转 8. 多个正方体 9. 观察视角 1. 概述 OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说&#x…...
github私有仓库开发,公开仓库发布版本
文章目录 github私有仓库开发,公开仓库发布版本需求背景实现思路GitHub Releases具体步骤广告 github私有仓库开发,公开仓库发布版本 需求背景 github私有仓库开发,公开仓库发布版本,既可以保护源代码,又可以发布版本给用户使用。许多知名软件项目都采用了这样的开…...
绿色低碳 数字未来-辽宁省建筑电气2023年学术年会-安科瑞 蒋静
2023年8月18日,辽宁省建筑电气2023年学术年会在辽宁友谊国宾馆成功召开。本届大会以“绿色低碳 数字未来”为主题,着眼为辽宁省建设提供智慧化电气设计及高质量产品服务。 安科瑞围绕“绿色低碳 数字未来”的主题,携充电桩及运营管理平台、工…...
基于Django REST framework的共享充电桩后台管理系统架构设计与实现
1. 为什么选择Django REST framework构建充电桩后台 第一次接触共享充电桩项目时,我对比了Node.js、Spring Boot和Django三个技术栈。最终选择Django REST framework(DRF)的原因很实在——它用30%的代码量就能实现其他框架80%的功能。特别是在…...
混合储能系统容量优化配置中的信号分解与容量分配算法解析
混合储能容量优化配置(钠硫电池、超级电容) 基于emd和vmd容量配置 1、先用vmd进行输入功率分解,通过分解出高频信号和低频信号,混合储能的功率分配,分给钠硫电池、超级电容。 2、分解后再求出储能的额定容量和额定功率…...
【C++第二十六章】特殊类设计
前言 🚀“特殊类设计”这一章看起来内容不多,但背后其实在讨论一个很典型、也很有代表性的 C 设计问题:类到底能不能限制对象的创建位置,能不能强制某个对象只能在堆上创建,或者只能在栈上创建。 这不是语法技巧题&…...
2026届毕业生推荐的五大降重复率方案推荐榜单
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 为能切实且有效地把文本里AIGC的比例给降下来,特地给出建议采用多维度的策略&am…...
Win10/11 系统出问题?安全模式一键进入,故障排查必备技巧
使用 Win10 或 Win11 电脑时,难免会遇到系统蓝屏、开机卡死、软件冲突导致无法正常进入桌面,或是中病毒、驱动异常的情况,此时常规操作根本无法解决问题,而安全模式就是系统故障排查和修复的 “救命神器”。它能让电脑以最基础的配…...
GHelper:华硕笔记本终极性能调校指南 - 轻量级硬件控制神器
GHelper:华硕笔记本终极性能调校指南 - 轻量级硬件控制神器 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Stri…...
数字资产管理问题的创新解法:WeChatMsg的本地化数据主权实现
数字资产管理问题的创新解法:WeChatMsg的本地化数据主权实现 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…...
如何开发GJSON自定义修饰符:扩展你的JSON处理能力
如何开发GJSON自定义修饰符:扩展你的JSON处理能力 【免费下载链接】gjson Get JSON values quickly - JSON parser for Go 项目地址: https://gitcode.com/gh_mirrors/gj/gjson GJSON是Go语言中一款高效的JSON解析工具,它允许开发者快速从JSON数据…...
Win11 24H2最新绕过OOBE强制登录微软账户的3种方法(附详细步骤)
Windows 11 24H2 本地账户创建终极指南:三种可靠绕过方案详解 每次Windows大版本更新,微软总会给用户带来一些"惊喜"。这次Windows 11 24H2的OOBE(开箱体验)强制要求登录微软账户,让不少注重隐私和习惯使用…...
TCP和UDP可以同时绑定相同的端口吗?
之前有读者在字节面试的时候,被问到:TCP 和 UDP 可以同时监听相同的端口吗?关于端口的知识点,还是挺多可以讲的,比如还可以牵扯到这几个问题:多个 TCP 服务进程可以同时绑定同一个端口吗?客户端…...
