爬爬爬——今天是浏览器窗口切换和给所选人打钩(自动化)

news2025/1/21 14:06:17

学习爬虫路还很长,第一阶段花了好多天了,还在底层,虽然不是我专业要学习的语言,和必备的知识,但是我感觉还挺有意思的。加油,这两天把建模和ai也不学了,唉过年了懒了!

加油坚持就是胜利!!!

先是浏览器窗口切换,这都是给浏览器驱动器发送指令,然后让他去干,很酷!!!!

import time

from selenium  import webdriver
from selenium.webdriver.common.by import By

url = "https://cdn2.byhy.net/files/selenium/sample3.html"
wd = webdriver.Edge()
wd.implicitly_wait(10)

wd.get(url)

element = wd.find_element(By.CSS_SELECTOR,'a')

print(element.get_attribute('outerHTML'))
element.click()
#存储下来
mainWindow = wd.current_window_handle

time.sleep(5)

for handle in wd.window_handles:
    wd.switch_to.window(handle)
    print(wd.title)
    if '必应' in wd.title:
        break

wd.find_element(By.CSS_SELECTOR,'#sb_form_q').send_keys("hahahah")
time.sleep(1)
wd.find_element(By.CSS_SELECTOR,'#search_icon').click()

time.sleep(5)
#返回窗口
wd.switch_to.window(mainWindow)

wd.find_element(By.CSS_SELECTOR,'button').click()
wd.find_element(By.CSS_SELECTOR,'button').click()
time.sleep(5)

wd.quit()

代码部分:

1.time-给浏览器时间,webdriver建立驱动浏览器,By-寻找(选择)

import time
from selenium  import webdriver
from selenium.webdriver.common.by import By

2.

url = "https://cdn2.byhy.net/files/selenium/sample3.html"
wd = webdriver.Edge()
wd.implicitly_wait(10)

建立联系,然后用

wd.implicitly_wait(10)———如果没有返回就等待,最多10s

3.


element = wd.find_element(By.CSS_SELECTOR,'a')

print(element.get_attribute('outerHTML'))
element.click()

找到标签为‘a’,打印‘a’在浏览器的代码是什么,打印的就是什么!!

然后点击(click())

4.

mainWindow = wd.current_window_handle

将现在的储存起来,便于操作完返回

5.

for handle in wd.window_handles:
    wd.switch_to.window(handle)
    print(wd.title)
    if '必应' in wd.title:
        break

在浏览器的窗口栏找到有‘必应’这两个字的,然后选择

6.搜索‘hahah’

wd.find_element(By.CSS_SELECTOR,'#sb_form_q').send_keys("hahahah")
time.sleep(1)
wd.find_element(By.CSS_SELECTOR,'#search_icon').click()


7.

wd.switch_to.window(mainWindow)

wd.find_element(By.CSS_SELECTOR,'button').click()
wd.find_element(By.CSS_SELECTOR,'button').click()
time.sleep(5)


然后返回最初的窗口

结束!!!


                                                        --------- 选择框-----

radio,checkbox,select框的选择

代码:

import time
from selenium.webdriver.support.ui import Select
from selenium import webdriver
from selenium.webdriver.common.by import By

url = "https://cdn2.byhy.net/files/selenium/test2.html"

wd = webdriver.Edge()
wd.implicitly_wait(5)

wd.get(url)

time.sleep(1)
elements = wd.find_element(By.CSS_SELECTOR,'#s_radio input[checked=checked]')
#print(elements.get_attribute("outerHTML"))
#print('您选的是:'+elements.get_attribute('value'))

#选择 ---------------------------radio
wd.find_element(By.CSS_SELECTOR,'#s_radio input[value="小雷老师"]').click()
element = wd.find_element(By.CSS_SELECTOR,'#s_radio input[checked=checked]')
time.sleep(1)
#选择---------------------------checkbox---多选
elements2 = wd.find_elements(By.CSS_SELECTOR,'#s_checkbox input[checked=checked]')
for i in elements2:
    i.click()
time.sleep(1)
wd.find_element(By.CSS_SELECTOR,'#s_checkbox input[value="小雷老师"]').click()
wd.find_element(By.CSS_SELECTOR,'#s_checkbox input[value="小凯老师"]').click()
time.sleep(1)
#选择---------------------------select---滑动
select = Select(wd.find_element(By.CSS_SELECTOR,'#ss_single'))
select.select_by_visible_text('小雷老师')
time.sleep(1)
#多选
select2 = Select(wd.find_element(By.CSS_SELECTOR,'#ss_multi'))
#删除所有
select2.deselect_all()
select2.select_by_visible_text('小雷老师')
select2.select_by_visible_text('小凯老师')
time.sleep(1)

wd.quit()

看着比较多,但是就是几个重复用。

代码:

1.

elements = wd.find_element(By.CSS_SELECTOR,'#s_radio input[checked=checked]')
#print(elements.get_attribute("outerHTML"))
#print('您选的是:'+elements.get_attribute('value'))
‘’

找到你现在目前所选的。

2.radio框

#选择 ---------------------------radio
wd.find_element(By.CSS_SELECTOR,'#s_radio input[value="小雷老师"]').click()
element = wd.find_element(By.CSS_SELECTOR,'#s_radio input[checked=checked]')
time.sleep(1)

找到你要选的,然后点击它,

3.多选

#选择---------------------------checkbox---多选
elements2 = wd.find_elements(By.CSS_SELECTOR,'#s_checkbox input[checked=checked]')
for i in elements2:
    i.click()
time.sleep(1)
wd.find_element(By.CSS_SELECTOR,'#s_checkbox input[value="小雷老师"]').click()
wd.find_element(By.CSS_SELECTOR,'#s_checkbox input[value="小凯老师"]').click()
time.sleep(1)

找到点击了的,然后在点一次,就是全部清除了。

然后选择

4. select滑动

#选择---------------------------select---滑动
select = Select(wd.find_element(By.CSS_SELECTOR,'#ss_single'))
select.select_by_visible_text('小雷老师')
time.sleep(1)

找到对应的,然后用文本搜索:选择

5.

#多选
select2 = Select(wd.find_element(By.CSS_SELECTOR,'#ss_multi'))
#删除所有
select2.deselect_all()
select2.select_by_visible_text('小雷老师')
select2.select_by_visible_text('小凯老师')

多选的,就是全部删除,然后用文本选择


学习与白月黑羽up主,爆赞!!!

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

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

相关文章

16 亚稳态原理和解决方案

1. 亚稳态原理 亚稳态是指触发器无法在某个规定的时间段内到达一个可以确认的状态。在同步系统中,输入总是与时钟同步,因此寄存器的setup time和hold time是满足的,一般情况下是不会发生亚稳态情况的。在异步信号采集中,由于异步…

MySQL篇----第二十二篇

系列文章目录 文章目录 系列文章目录前言一、什么是表级锁二、什么是页级锁三、什么是行级锁四、什么是悲观锁前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、…

2023-12蓝桥杯STEMA 考试 Python 中高级试卷解析

蓝桥杯STEMA 考试 Python 中高级试卷(12 月) 一、选择题 第一题 以下哪项是取余运算符?( C ) A、* B、// C、% D、 第二题 已知:s "python",执行 print(s[::2])语句后&…

【Java程序设计】【C00265】基于Springboot的地方废物回收机制管理系统(有论文)

基于Springboot的地方废物回收机制管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的地方废物回收机构管理系统 本系统分为管理员功能模块以及员工功能模块。 管理员功能模块:管理员登录系统后…

使用matplotlib库来绘制柱状图

# coding: utf-8 from matplotlib import pyplot as plt from matplotlib import font_manager# 定义区间和宽度列表 interval [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 60, 90] width [5, 5, 5, 5, 5, 5, 5, 5, 5, 15, 30, 60] # 定义数量列表 quantity [836, 2737, 3723, …

【QT+QGIS跨平台编译】之三十六:【RasterLite2+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、RasterLite2介绍二、文件下载三、文件分析四、pro文件五、编译实践一、RasterLite2介绍 RasterLite2是一个开源的轻量级栅格数据库,可以用于存储和管理各种类型的栅格数据,包括卫星遥感图像、数字高程模型等。 与传统的GIS数据存储方式不同,RasterLite2采用基…

【程序设计竞赛】C++与Java的细节优化

必须强调下,以下的任意一种优化,都应该是在本身采用的算法没有任何问题情况下的“锦上添花”,而不是“雪中送炭”。 如果下面的说法存在误导,请专业大佬评论指正 读写优化 C读写优化——解除流绑定 在ACM里,经常出现…

基于Qt的人脸识别项目(功能:颜值检测,口罩检测,表情检测,性别检测,年龄预测等)

完整代码链接在文章末尾 效果展示 代码讲解(待更新) qt图片文件上传 #include <QtWidgets> #include <QFileDialog>

普通男孩的新年创作纪念日

前言 首先在新春佳节&#xff0c;小编在这里祝各位大佬。萌新友友们新年好&#xff0c;希望每一个烟火般的你在新的一年里 offer 多多&#xff0c;薪资多多 &#xff0c;龙行龘龘 &#x1f409; &#x1f409; &#x1f409; &#x1f409;&#xff0c;前程朤朤 ❤️ ❤️ ❤…

Ps:堆栈模式在摄影后期的应用

Photoshop 的堆栈模式 Stack Mode为摄影师提供了一种强大的后期处理能力&#xff0c;通过堆叠和处理多张照片来实现无法单靠一张照片完成的效果。 正确的前期拍摄策略和后期处理技巧可以显著提高最终图像的质量和视觉冲击力。 ◆ ◆ ◆ 前期拍摄通用注意事项 在前期拍摄时&am…

【排序】快速排序

基本思想 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其基本思想为&#xff1a;任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右子序列中所…

视频讲解:优化柱状图

你好&#xff0c;我是郭震 AI数据可视化 第三集&#xff1a;美化柱状图&#xff0c;完整视频如下所示&#xff1a; 美化后效果前后对比&#xff0c;前&#xff1a; 后&#xff1a; 附完整案例源码&#xff1a; util.py文件 import platformdef get_os():os_name platform.syst…

STM32 寄存器操作 GPIO 与中断

一、如何使用stm32寄存器点灯&#xff1f; 1.1 寄存器映射表 寄存器本质就是一个开关&#xff0c;当我们把芯片寄存器配置指定的状态时即可使用芯片的硬件能力。 寄存器映射表则是开关的地址说明。对于我们希望点亮 GPIO_B 的一个灯来说&#xff0c;需要关注以下的两个寄存器…

Linux---网络套接字

端口号 端口号 端口号是一个2字节16位的整数; 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理; IP地址 端口号能够标识网络上的某一台主机的某一个进程; 一个端口号只能被一个进程占用 在公网上&#xff0c;IP地址能表示唯一的一台主机&…

大模型激活函数知识

FFN块 计算公式 在Transformer模型中&#xff0c;FFN&#xff08;Feed-Forward Network&#xff09;块通常指的是在编码器&#xff08;Encoder&#xff09;和解码器&#xff08;Decoder&#xff09;中的一个全连接前馈网络子结构。FFN块位于自注意力层&#xff08;Self-Attent…

C语言第二十三弹---指针(七)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 指针 1、sizeof和strlen的对比 1.1、sizeof 1.2、strlen 1.3、sizeof 和 strlen的对比 2、数组和指针笔试题解析 2.1、⼀维数组 2.2、二维数组 总结 1、si…

Java 基于微信小程序的私家车位共享系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

WebSocket原理详解

目录 1.引言 1.1.使用HTTP不断轮询 1.2.长轮询 2.websocket 2.1.概述 2.2.websocket建立过程 2.3.抓包分析 2.4.websocket的消息格式 3.使用场景 4.总结 1.引言 平时我们打开网页&#xff0c;比如购物网站某宝。都是点一下列表商品&#xff0c;跳转一下网页就到了商品…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Marquee组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Marquee组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Marquee组件 跑马灯组件&#xff0c;用于滚动展示一段单行文本&#xff0c;仅当…