『python爬虫』22. 初识自动化测试工具selenium(保姆级图文)

news2024/11/23 2:56:13

目录

    • 1. selenium的安装配置
    • 2. 为什么使用selenium?它的优势和缺点是什么?
    • 3. selenium的基本使用
    • 4. selenium实战之csdn搜索python博文
      • 4.1 点击选择文章
      • 4.2 搜索栏输入搜索关键词
      • 4.3 实现代码
    • 总结


欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中

1. selenium的安装配置

需要下载对应你谷歌浏览器版本的驱动,详情可看我的博文

配置selenium库的浏览器驱动,解决selenium.common.exceptions.SessionNotCreatedException 报错(保姆级图文)


2. 为什么使用selenium?它的优势和缺点是什么?

  • selenium是⼀个⾃动化测试的⼯具,可以模拟真人启动一个浏览器访问网页,并从中提取到你想要的内容。
  • selenium的独特优点:真正模拟真人,有谷歌官方支持研发推动。随着各种⽹站的反爬机制的出现,比如我们之前遇到过的各种加密解密、各种请求响应,知道他加密的方法后爬虫不困难,但是如何研究出他的加密方式很困难。
  • selenium最⼤的缺点:慢。他要启动⼀个(浏览器),请求一些可能我们不需要的资源,(比如我们只要爬取文字,但是他本身也会顺带请求图片的信息)还要让浏览器把数据渲染后才开始爬虫,这大大增加了资源占用和消耗的时间。

3. selenium的基本使用

从一个驱动对象开始,寻找节点,进行各种操作。

  • web = Chrome() #创建一个selenium对象
  • web.get(“http://lagou.com”) #模拟浏览器打开一个网页
  • el = web.find_element_by_xpath(‘//*[@id=“changeCityBox”]/ul/li[1]/a’) #xpath的解析方式寻找元素节点
  • el.click() # 元素节点.click() 表示点击元素节点
  • web.find_element_by_xpath(‘//*[@id=“search_input”]’).send_keys(“python”, Keys.ENTER) #搜索栏输入关键词
  • 注意操作延时等待的问题,有固定等待时间/隐式等待/显式等待三种方法。

4. selenium实战之csdn搜索python博文

我的博客主页
https://blog.csdn.net/u011027547

4.1 点击选择文章

切换到文章的选项卡,这里就复制一下文章的xpath//*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[1]/ul/li[2]

在这里插入图片描述

注意点击后会有一个加载的时间,注意要留一点等待的时间,防止加载过慢,我们就进行下一步的操作。(细心的你也许会发现url变成了https://blog.csdn.net/u011027547?type=blog就是在原来的基础上增加了?type=blog其实切换到文章这种步骤如果没有防盗链限制访问来源refer的url的话,后期可以直接省略,url参数加上就行,这里是为了给大家演示点击的操作。)

4.2 搜索栏输入搜索关键词

在这里插入图片描述

csdn的搜索需要先点击一下搜TA的内容 xpath为//*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[1]/div/div[1]/span,然后才会激活搜索关键词输出进而搜索
在这里插入图片描述

得到搜索栏xpath //*[@id="mSearchInput"],节点使用 send_keys("python", Keys.ENTER)输入关键词后回车,等级搜索结束就可以爬取数据了

4.3 实现代码

因为搜索会打开一个新的窗口,这部分内容放在下一篇文章详细说明。本次代码截止到出现待爬取数据的页面

from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys

import time

from selenium.webdriver.support.wait import WebDriverWait

web = Chrome()#创建一个selenium对象

web.get("https://blog.csdn.net/u011027547")#模拟浏览器打开一个网页

# 最大化浏览器的窗口
# web.maximize_window()

# 找到某个元素. 点击文章选项卡
el = web.find_element_by_xpath('//*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[1]/ul/li[2]')#xpath的解析方式寻找元素节点
el.click()  # 元素节点.click() 表示点击元素节点

time.sleep(2)
# 让浏览器缓一会儿,注意这个时长一定要大于网页渲染的时间
# 否则可能我们点击后的网页新出现的节点没有出现,程序就继续执行下去了,找不到我们要点击的新节点

# 找到输入框. 输入python  =>  输入回车/点击搜索按钮
web.find_element_by_xpath('//*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[1]/div/div[1]/span').click()
time.sleep(2)
web.find_element_by_xpath('//*[@id="mSearchInput"]').send_keys("python", Keys.ENTER)

在这里插入图片描述

总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2023 mzh

Crated:2023-3-1

欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中
『未完待续』


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

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

相关文章

【MYSQL】索引的原理(B+树实现)和操作

目录 1.MYSQL与磁盘交互的基本单位 2.索引的原理 3.聚簇索引 4.索引操作 认识磁盘 1.MYSQL与磁盘交互的基本单位 为了提高基本的IO效率, MySQL进行IO的基本单位是16KB 一次使用16KB(称为page)为单位大于磁道的扇面(521B&…

Golang笔记:使用ssh包作为客户端与SSH服务器交互

文章目录 目的基础说明使用演示单次通讯连续通讯(远程终端) 总结 目的 Golang中可以使用 golang.org/x/crypto/ssh 包作为SSH客户端或者SSH服务使用。这篇文章将简单记录下作为客户端使用的一些内容。 Package ssh implements an SSH client and server…

Java基础 开发相关的介绍和准备(开发环境搭建)

Java 概述 是 SUN(Stanford University Network,斯坦福大学网络公司 ) 1995 年推出的一门高级 编程语言。 是一种面向 Internet 的编程语言。Java 一开始富有吸引力是因为 Java 程序可以在 Web 浏览器中运行。这些 Java 程序被称为 Java 小程序(applet)&#xff0c…

学系统集成项目管理工程师(中项)系列22a_信息化知识(上)

1. 战略资源 1.1. 信息 1.2. 土地 1.3. 能源 1.4. 材料 2. 信息information 2.1. 客观事物状态和运动特征的一种普遍形式 2.2. 控制论 2.2.1. 维纳Norbert Wiener 2.2.2. 信息就是信息,既不是物质也不是能量 2.3. 哲学界 2.3.1. 信息是事物普遍联系的方式…

通过xshell连接甲骨文服务器并安装宝塔详细图文教程避免踩坑

问题: 一,甲骨文创建好了,并且下载了私钥,怎么连接?忘记下载了怎么办? 二,xshell怎么使用? 三,宝塔怎么安装? 起点: 最近有幸注册了一个甲骨…

SpringBoot--Lombok--Initailizr--yaml

目录 SpringBoot--Lombok Lombok 介绍 ● Lombok 作用 ● SpringBoot 和IDEA 官方支持 Lombok 常用注解 Lombok 应用实例 代码实现 在pom.xml 引入lombok 修改Furn.java 使用Lombok 注解简化代码, 解读 NoArgsConstructor AllArgsConstructor ToString Setter Ge…

多种方法解决Please specify which branch you want to merge with的错误

文章目录 1. 复现错误2. 分析错误3. 解决错误3.1 远程有分支3.2 远程无分支 4. 总结 1. 复现错误 今天发布某版本的项目,准备创建个v0point1分支,后期如果修改该版本,直接在该分支上修改即可。 首先,使用git branch v0point1命令…

软考A计划-真题-分类精讲汇总-第十三章(专业英语)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

红黑树的实现

文章目录 红黑树前言1. 红黑树的概念及性质1.1 红黑树的概念1.2 红黑树的性质 2. 红黑树的结构2.1 红黑树节点的定义2.2 红黑树的结构 3. 红黑树的操作3.1 红黑树的查找3.2 红黑树的插入处理红黑树颜色的过程(重点)情况1: 只变色情况2: 变色 单旋情况3: 变色 双旋 处理颜色的…

ubuntu深度学习使用TensorFlow卷积神经网络——图片数据集的制作以及制作好的数据集的使用

首先我事先准备好五分类的图片放在对应的文件夹,图片资源在我的gitee文件夹中链接如下:文件管理: 用于存各种数据https://gitee.com/xiaoxiaotai/file-management.git 里面有imgs目录和npy目录,imgs就是存放5分类的图片的目录,里面…

哈工大计组大作业-RISC处理器设计

RISC_CPU_HIT RISC处理器设计 地址:https://github.com/944613709/Design-of-RISC-Processor.git 要求 根据计算机组成原理课程所学的知识,设计一个给定指令系统的处理器,深刻理解处理器结构和计算机系统的整体工作原理。 1. 处理器功能及…

软件工程(二) 软件开发模型

软件开发模型主要了解如下这些模型,加粗表示重点要掌握的模型。 瀑布模型: 迭代模型/迭代开开发方法 演化模型: 快速开发应用 增量模型: 构建组装模型/基于构建的开发方法 螺旋模型: 统一过程/统一开发方法 原型模型: 敏捷开发方法 喷泉模型: 模型驱动的开发方法 V模型: 基于架…

C/C++每日一练(20230516) 最佳时机、两数相加、后序遍历

目录 1. 买卖股票的最佳时机 🌟 2. 两数相加 🌟🌟 3. 二叉树的后序遍历 🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 买卖股票…

D2. Red-Blue Operations (Hard Version)(思维/贪心/前缀和)

建议先从easy version开始做。 easy version题解 题目 题意 给定长度为n(1<n<200000)的数组 1<a[i]<10^9 q个查询(1<q<200000)&#xff0c;每次查询&#xff0c;给定整数k(1<k<10^9) 初始时&#xff0c;每个元素状态都是红色。 对于第i次操作&…

【小沐学Unity3d】Unity插件之天气系统UniStorm

文章目录 1、简介1.1 描述1.2 兼容性1.3 价格1.4 特点1.5 示例 3、安装3.1 新建Unity项目3.2 安装插件UniStorm3.3 介绍UniStorm工具栏3.4 入门使用 4、脚本开发4.1 接口简介4.1.1 天气4.1.2 时间4.1.3 程度4.1.4 季节4.1.5 系统4.1.6 其他 4.2 接口测试4.2.1 测试1 结语 1、简…

教你如何使用Nodejs搭建HTTP web服务器并发布上线公网

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 转载自内网穿透工具的文章&#xff1a;使用Nodejs搭建HTTP服务&#xff0c;并实现公网远程访问「内网穿透」 前言 Node.js…

60岁的机器视觉工程师,你还在敲代码?不想做机器视觉工程师,还可以做什么?机器视觉工程师职业生命线有多长​?

如果按程序员参加工作时间为22岁计算,平均退役年龄为35岁计算的话,程序员的职业寿命大概为14年。为什么程序员的职业生命线如此短暂呢?大致有以下几点—— 1、编程技术层出不穷,迭代速度非常快,这时候就需要我们不断的学习,不断地保持学习能力,当随着年龄的增长我们的学…

【数据结构】链表:带头双向循环链表的增删查改

本篇要分享的内容是带头双向链表&#xff0c;以下为本片目录 目录 一、链表的所有结构 二、带头双向链表 2.1尾部插入 2.2哨兵位的初始化 2.3头部插入 2.4 打印链表 2.5尾部删除 2.6头部删除 2.7查找结点 2.8任意位置插入 2.9任意位置删除 在刚开始接触链表的时候&…

86. print输出函数知识拓展(有练习题)

86. print输出函数知识拓展&#xff08;有练习题&#xff09; 文章目录 86. print输出函数知识拓展&#xff08;有练习题&#xff09;1. print函数语法2. 横着输出数字序列3. 竖着输出数字序列4. 循环输出5. 总结 1. print函数语法 print[prɪnt]&#xff1a;打印&#xff0c;…

少儿编程scratch -- 基础篇

1.开篇 花费40分钟 首先&#xff0c;我们学的是scratch(划痕&#xff09;&#xff0c;Scratch 是麻省理工学院的“终身幼儿园团队”在 2007 年 [5] 发布的一种图形化编程工具&#xff0c;主要面对全球青少年开放&#xff0c;是图形化编程工具当中最广为人知的一种&…