当前位置: 首页 > news >正文

初识爬虫8

1.selenium的作用和工作原理

2. 使用selenium,完成web浏览器调用

# -*- coding: utf-8 -*-
# 自动化测试工具,降低难度,性能也降低
from selenium import webdriverdriver = webdriver.Edge()driver.get("https://www.itcast.cn/")driver.save_screenshot("itcast.png")
print(driver.title)# 一定要退出!不退出会有残留进程
driver.quit()# from selenium import webdriver
# from selenium.webdriver.edge.options import Options
#
# # 创建Edge选项对象
# options = Options()
# # 设置无头模式
# 启动无头模式,让浏览器在后台运行
# options.add_argument('--headless')
# 禁用GPU硬件加速,通常建议在无头模式下使用。
# options.add_argument('--disable-gpu')
#
# # 初始化WebDriver并传入无头模式选项
# driver = webdriver.Edge(options=options)
#
# # 访问指定网址
# driver.get("https://www.itcast.cn/")
#
# # 截图并保存
# driver.save_screenshot("itcast.png")
# print(driver.title)
#
# # 一定要退出!避免残留进程
# driver.quit()

3.简单使用        

# -*- coding: utf-8 -*-
import time
from selenium import webdriver
from selenium.webdriver.common.by import By  # 导入 By 模块driver = webdriver.Edge()  # 启动 Edge 浏览器
driver.get("https://www.baidu.com")
time.sleep(3)# 在百度搜索框中使用 XPath 搜索 'python'
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('python')  # 使用 XPath 定位# 或者使用 CSS Selector 搜索 'python'
# driver.find_element(By.CSS_SELECTOR, '#kw').send_keys('python')  # 使用 CSS Selector 定位# 在百度搜索框中搜索‘python’
# driver.find_element(By.NAME, 'wd').send_keys('python')  # 使用 By.NAME 定位搜索框# 点击‘百度搜索’
driver.find_element(By.ID, 'su').click()  # 使用 By.ID 定位‘百度一下’按钮time.sleep(6)# 退出浏览器
driver.quit()

4.driver的属性和方法

 

# -*- coding: utf-8 -*-
import sys
import timefrom selenium import webdriver# 设置标准输出为utf-8编码
sys.stdout.reconfigure(encoding='utf-8')url = 'http://www.baidu.com'# 创建浏览器对象
driver = webdriver.Edge()
# 访问指定url地址
driver.get(url)
# # 显示源码
# print(driver.page_source)
# # 显示响应对应的url
# print(driver.current_url)
#
# time.sleep(3)
# driver.get('http://www.douban.com')
#
# time.sleep(3)
# driver.back()
#
# time.sleep(2)
# driver.forward()
#
# time.sleep(3)
# # driver.close()# 用于验证是否运行或验证码截图保存处理
driver.save_screenshot('baidu.png')
driver.quit()

 4.元素定位

elements = driver.find_elements(by=By.<定位方式>, value='选择器')
常用的定位方式:
By.ID:通过元素的 ID 属性查找元素。
By.NAME:通过元素的 name 属性查找元素。
By.XPATH:通过 XPath 查找元素。
By.CSS_SELECTOR:通过 CSS 选择器查找元素。
By.CLASS_NAME:通过元素的类名查找元素。
By.TAG_NAME:通过标签名称查找元素。
By.LINK_TEXT 和 By.PARTIAL_LINK_TEXT:通过链接的文本查找元素。

常用XPATH和CSS_SELECTOR(万金油XPATH)

下面代码使用的是:driver.find_element() 注意这里element没有加s,只适用于单个元素。

# -*- coding: utf-8 -*-
import time
from selenium import webdriver
from selenium.webdriver.common.by import By  # 导入 By 模块driver = webdriver.Edge()  # 启动 Edge 浏览器
driver.get("https://www.baidu.com")
time.sleep(3)# 在百度搜索框中使用 XPath 搜索 'python'
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('python')  # 使用 XPath 定位# 或者使用 CSS Selector 搜索 'python'
# driver.find_element(By.CSS_SELECTOR, '#kw').send_keys('python')  # 使用 CSS Selector 定位# 在百度搜索框中搜索‘python’
# driver.find_element(By.NAME, 'wd').send_keys('python')  # 使用 By.NAME 定位搜索框# 点击‘百度搜索’
driver.find_element(By.ID, 'su').click()  # 使用 By.ID 定位‘百度一下’按钮time.sleep(6)# 退出浏览器
driver.quit()

selenium结合XPATH简单使用:

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By# 打开目标URL
url = 'https://cq.58.com/hezu/?PGTID=0d100000-0002-59f0-74d2-1a2d488460c0&ClickID=5'# 初始化Edge浏览器
driver = webdriver.Edge()# 打开页面
driver.get(url)# 使用 find_elements 获取所有匹配的元素
el_list = driver.find_elements(By.XPATH, '/html/body/div[6]/div[2]/ul/li/div[2]/h2/a')# 遍历并打印每个元素
for el in el_list:print(el.text)  # 打印元素的文本内容# 关闭浏览器
driver.quit()

相关文章:

初识爬虫8

1.selenium的作用和工作原理 2. 使用selenium&#xff0c;完成web浏览器调用 # -*- coding: utf-8 -*- # 自动化测试工具&#xff0c;降低难度&#xff0c;性能也降低 from selenium import webdriverdriver webdriver.Edge()driver.get("https://www.itcast.cn/")…...

Unity SRP 可编程渲染管线的基本用法

可编程渲染管线使用教程 SRP 可以处理Canvas为Screen Space - Overlay的渲染 安装插件 首先进入package manager&#xff0c;下载Core RP Lib组件 创建渲染管线 编写渲染管线逻辑脚本 新建脚本取名为MPipeLine&#xff0c;该脚本用于实现渲染管线的处理逻辑 using Unity…...

AutoX.js向后端传输二进制数据

android的JavaScript自动化软件用过Hamibot和AutoX.js 不过在向后端传输二进制数据时都有些限制&#xff0c;不如浏览器前端那么自由。Hamibot的http按文档应该时能支持传字节数组&#xff0c;但是实际上应该还没有支持。AutoX.js的http也是这样&#xff0c;但是AutoX.js还支持…...

lvgl学习笔记--基础对象1

【LVGL学习笔记】&#xff08;三&#xff09;控件使用_学习_煜个头头-GitCode 开源社区 LVGL 基础对象|极客笔记 #include "../../../lv_examples.h"void lv_ex_obj_1(void) {lv_obj_t * obj1;obj1 lv_obj_create(lv_scr_act(), NULL);lv_obj_set_size(obj1, 100, …...

TDengine 在业务落地与架构改造中的应用实践!

前言 在物联网和大数据时代&#xff0c;时序数据的管理和分析变得至关重要。TDengine&#xff0c;作为一款专为时序数据设计的开源数据库&#xff0c;以其卓越的存储和查询效率&#xff0c;成为众多企业优化数据架构的优选。本文将分享我将TDengine成功应用于实际业务的经验&am…...

Python3爬虫教程-HTTP基本原理

HTTP基本原理 1&#xff0c;URL组成部分详解2&#xff0c;HTTP和HTTPS3&#xff0c;HTTP请求过程4&#xff0c;请求&#xff08;Request&#xff09;请求方法&#xff08;Request Method&#xff09;请求的网址&#xff08;Request URL&#xff09;请求头&#xff08;Request H…...

竹云赋能“中国·贵州”全省统一移动应用平台建设,打造政务服务“新引擎”

近日&#xff0c;2024中国国际大数据产业博览会在贵州贵阳圆满落幕。会上&#xff0c;由贵州省政府办公厅牵头建设的“中国贵州”全省统一移动应用平台正式发布&#xff0c;聚焦民生办事、政务公开、政民互动、扁平高效、数据赋能五大模块&#xff0c;旨在打造公平普惠的服务平…...

【MySQL 04】数据类型

目录 1.数据类型分类 2.数值类型 2.1 tinyint 类型 2.2 bit类型 2.3 float类型 2.4decimal 3.字符串类型 3.1 char类型 3.2 varchar类型 4.日期和时间类型 6. enum和set类型 6.1.enum和set类型简介&#xff1a; 6.2.enum和set的一般使用方法 6.3.用数字的方式…...

夹耳式蓝牙耳机哪个牌子最好,教你如何不踩雷

近年来&#xff0c;夹耳式耳机备受众人喜爱。主要原因在于其不入耳的特性&#xff0c;既能保护听力健康&#xff0c;又能让人享受到极致的音乐体验。久而久之&#xff0c;人们对入耳式耳机反而感到不习惯了。然而&#xff0c;一些想要入手夹耳式耳机的小伙伴却犯了难&#xff0…...

亿发零售云解析:新零售破局与年轻群体消费趋势变化

近年来&#xff0c;随着数字化、智能化的快速发展&#xff0c;“新零售”概念逐渐成为商业领域的热门话题。相比传统零售&#xff0c;新零售通过线上与线下的深度融合&#xff0c;利用大数据、人工智能等技术&#xff0c;赋能消费者与品牌之间的互动。尤其在年轻消费群体中&…...

zabbix“专家坐诊”第257期问答

问题一 Q&#xff1a;zabbix5.0监控项里的键值&#xff0c;怎么设置变量值&#xff1f;{#ABC} {$ABC} 都识别不到变量。 A&#xff1a;可以参考一下这个。 问题二 Q&#xff1a;我想问一下用odbc创建监控项&#xff0c;生成了json格式&#xff0c;如何创建一个触发器去判断里面…...

【代码笔记】

1级 第一课——cout /* C01.L01.程序的基本结构、cout语句 杨彦彬 2024.9.23日作业 &#xff08;2024.9.23做&#xff09; */ //调用头文件 #include<bits/stdc.h> //使用标准名字空间 using namespace std; //代码主体 int main(){//输出数字cout<<25;cout<&…...

CentOS上使用Mosquitto实现Mqtt主题消息发布和订阅mqtt主题消息连同时间戳记录到文件

场景 CentOS上使用rpm离线安装Mosquitto(Linux上Mqtt协议调试工具)附资源下载&#xff1a; CentOS上使用rpm离线安装Mosquitto(Linux上Mqtt协议调试工具)附资源下载-CSDN博客 上面介绍了mosquitto的离线安装。 如果业务场景中需要订阅某mqtt主题的消息并将收到消息的时间以…...

COMTRADE 录波文件 | 可视化工具 | 电能质量查看软件

COMTRADE 录波文件 | 可视化工具 | 电能质量查看软件 主要功能介绍 支持 IEEE Std C37.111-1991/1999/2013 规范。读取 ASCII 或二进制 COMTRADE 文件。查看来自 COMTRADE 配置文件的模拟和数字通道列表。将图表导出为 SVG、BMP、JPEG 和 PNG 图形格式。将显示的观察结果以 C…...

【面试宝典】面试基础指导

目录 &#x1f354; 简历怎么写 &#x1f354; ⾯试前针对项⽬撰写完成项⽬⽂档 &#x1f354; ⾯试前 &#x1f354; ⾯试中 4.1 投递简历当天没有收到⾯试邀约 4.2 讲解项⽬ 4.3 讲解知识 4.4 ⾯试中关于技术选型的演变 &#x1f354; ⾯试后 &#x1f354; 小结 &…...

Linux·权限与工具-git与gdb

1. git工具 git是一款软件&#xff0c;发明它的人同时发明了Linux操作系统&#xff0c;也就是大名鼎鼎的Linus Torvalds 林纳斯托瓦兹。后来人们把git软件包装&#xff0c;产生了github、gitee等平台。 git产生的初衷就是便于进行多人协同管理&#xff0c;同时它还可以用来将本…...

unity 如何 团队协作避免文件冲突?

在Unity团队协作中&#xff0c;避免文件冲突的关键在于版本控制、场景和Prefab的管理、以及沟通。以下是具体方法&#xff1a; 1. 使用版本控制系统 (VCS) Unity支持多个版本控制系统&#xff0c;如Git和Perforce。通过版本控制&#xff0c;每位团队成员可以独立工作&…...

VOC2007 的ImageSets/Main目录下通常有四个文件test.txt val.txt train.txt trainval.txt

在 VOC2007 的ImageSets/Main目录下通常有四个文件&#xff1a; test.txt&#xff1a;这个文件列出了用于测试的图像文件名。这些图像将在评估模型性能等测试阶段被使用。train.txt&#xff1a;此文件包含用于训练的图像文件名。在模型的训练过程中&#xff0c;程序会读取这些图…...

JavaScript中的parseInt(), Number(),+有啥区别?

文章目录 parseInt()Number()一元加号 处理 NaN 的常见方法1. 使用 isNaN() 函数检查值2. 使用 Number.isNaN() 方法3. 提供默认值4. 使用 try...catch 结构5. 使用类型守卫 在JavaScript中&#xff0c;parseInt(), Number(), 和一元加号 都可以用来转换值到数字类型&#xff…...

java核心基础

文章目录 1. Java开发基础1.1 DOS常用命令:&#xff08;以MAC常用命令比较&#xff09;1.2 JVM、JRE、JDK之间的关系1.3 Java开发环境的搭建1.4 Java的注释&#xff0c;标识符、标识符的命名规范1.5 变量和常量的定义及初始化1.6 Java的运算符1.7 三大语句1.8 常用的类1.8.1 ja…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...