[网络爬虫] 动态网页抓取 — Selenium 入门操作

🌟想系统化学习爬虫技术?看看这个:[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客

0x01:WebDriver 类基础属性 & 方法

为模仿用户真实操作浏览器的基本过程,Selenium 的 WebDriver 模块提供了一个 WebDriver 类(表示浏览器),该类中提供了一些诸如打开浏览器、关闭浏览器、刷新浏览器、前进、后退等入门操作的方法和属性:

属性 OR 方法解析
title获取当前页面的标题
current_url获取当前页面的 URL 地址
page_source获取当前页面的 HTML 代码(渲染后的)
get()根据指定的 URL 地址访问页面
maximize_window()设置浏览器窗口最大化
forward()页面前进
back()页面后退
refresh()刷新当前页面
save_screenshot()截取当前浏览器窗口
close()关闭当前页面
quit()关闭浏览器

0x02:get() 方法 & page_source 属性

使用 get() 方法可以操作浏览器访问的目标网页,使用 page_source 可以获取当前页面整体的源代码(渲染后的),比如下面的例子,我们尝试访问 taobao.com 并抓取渲染好的页面:

from selenium import webdriver
import time
​
driver = webdriver.Chrome() # 创建浏览器对象
driver.get("https://taobao.com")          # 访问淘宝首页
​
# 因为从访问淘宝到淘宝加载商品数据中间有一段时间,所以我们得强制等待一会,等待页面完全加载
time.sleep(3)              # 等待 3 秒
print(driver.page_source)  # 打印渲染好的页面
# print(driver.title)      # 获取当前页面的标题
# print(driver.current_url) # 获取当前页面的 URL 地址

如上,我们成功抓取了淘宝官网动态加载后的页面数据,只要再结合之前学习的数据提取方法,我们就能够很轻松的从动态页面中抓取我们想要的数据啦。

对于 title 属性与 current_url 属性相信聪明如你一定知道是提取啥的了吧,笔者后面就不特意讲了,如果不知道的话,自己跑跑呗(把上面注释去掉就行)。

0x03:maximize_window() 方法

使用 Selenium 启动浏览器后,浏览器的窗口默认不是以最大化形式显示的,此时通过调用 maximize_window() 方法即可实现浏览器窗口最大化:

from selenium import webdriver
import time
​
driver = webdriver.Chrome() # 创建浏览器对象
driver.get("https://taobao.com")          # 访问淘宝首页
​
# 让浏览器窗口最大化
driver.maximize_window()

0x04:forward()、back()、refresh() 方法

经常用浏览器的你肯定对下面三个小按钮非常熟悉,它们就是后退(←)、前进(→)和刷新按钮:

下面介绍 forward()back()refresh() 方法就对应上面那几个功能,下面是一个示例代码:

from selenium import webdriver
import time
​
driver = webdriver.Chrome() # 创建浏览器对象
driver.maximize_window()    # 让浏览器窗口最大化
​
driver.get("https://taobao.com")          # 访问淘宝首页
time.sleep(3)                             # 暂停三秒
driver.get("https://www.baidu.com")       # 访问百度首页
time.sleep(3)                             # 暂停三秒
driver.back()                             # 模拟回退按钮,回退到淘宝首页
time.sleep(3)                             # 暂停三秒
driver.forward()                          # 模拟前进按钮,前进到百度首页
time.sleep(3)                             # 暂停三秒
driver.refresh()                          # 模拟刷新按钮,刷新页面

对于代码的执行效果,还得是观众老爷自己运行看看(笔者建议是自己敲一遍),这里笔者就不放图了。

0x05:save_screenshot()、close()、quit() 方法

通过 WebDriver 类的 save_screenshot() 放啊我们可以截取当前的窗口并将其保存为 PNG 格式的图像文件,比如下面这个例子,我们尝试截取淘宝首页图片,并保存为 taobao.png

from selenium import webdriver
import time
​
driver = webdriver.Chrome() # 创建浏览器对象
driver.maximize_window()    # 让浏览器窗口最大化
​
driver.get("https://taobao.com")          # 访问淘宝首页
​
print("[ + ] 成功访问淘宝首页! 三秒后开始截图操作 ....")
time.sleep(3)
​
driver.save_screenshot('taobao.png')
print("[ + ] 截屏完成,保存为了 taobao.png,三秒后将关闭当前页面 ....")
time.sleep(3)
​
driver.close() # 退出当前页面
print("[ + ] 成功关闭页面, 3 秒钟后将关闭浏览器,退出程序 .....")
time.sleep(3)
​
driver.quit()  # 退出浏览器

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

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

相关文章

牛客周赛A:84:JAVA

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 \hspace{15pt}小红定义一个数组的陡峭值为:每两个相邻的元素,差值的绝对值之和。例如,数组 {2,3,1}\{2,3,1\}{2,3,1} 的陡峭值是 ∣2−3∣∣3−1∣…

Cython编译去掉符号表

在Cython编译过程中去掉符号表(symbol table)可以增加生成代码的安全性,使其更难被逆向工程。然而,需要注意的是,Cython本身并不直接提供一个开关来去除符号表。通常,这是通过编译器和链接器的选项来实现的…

在 IntelliJ IDEA(2024) 中创建 JAR 包步骤

下是在 IntelliJ IDEA 中创建 JAR 包的详细的步骤: ​1. 选择File -> Project Structure->Artifacts, (1)点击➕新建,如下图所示: (2)选择JAR->Empty (3)输入jar包名称,确定输出路径 (4&#…

Python零基础学习第三天:函数与数据结构

一、函数基础 函数是什么? 想象你每天都要重复做同一件事,比如泡咖啡。函数就像你写好的泡咖啡步骤说明书,每次需要时直接按步骤执行,不用重新想流程。 # 定义泡咖啡的函数 def make_coffee(sugar1): # 默认加1勺糖 print("…

idea启动项目报端口被占用

端口确实被占用 winR,输入cmd,进入终端,查找到对应端口的进程id,杀掉项目 netstat -ano | findstr "8080"taskkill /F /PID 37020 idea设置中,选择让maven代替进行项目关闭,此时其实点击build可…

达梦数据库在Linux,信创云 安装,备份,还原

(一)系统环境检查 1操作系统:确认使用的是国产麒麟操作系统,检查系统版本是否兼容达梦数据库 V8。可以通过以下命令查看系统版本: cat /etc/os-release 2硬件资源:确保服务器具备足够的硬件资源&#xff0…

Java中,BIO、NIO和AIO三种模型的区别和适用场景

在Java中,BIO(同步阻塞IO)、NIO(同步非阻塞IO)和AIO(异步非阻塞IO)是三种核心的I/O模型,它们在处理网络通信时有着不同的设计理念和适用场景。以下从核心特性、适用场景及联系三方面…

p5.js:模拟 n个彩色小球在一个3D大球体内部弹跳

向 豆包 提问:编写一个 p5.js 脚本,模拟 42 个彩色小球在一个3D大球体内部弹跳。每个小球都应留下一条逐渐消失的轨迹。大球体应缓慢旋转,并显示透明的轮廓线。请确保实现适当的碰撞检测,使小球保持在球体内部。 cd p5-demo copy…

linux环保监测4G边缘网关:环境数据的可靠传输者

环保监测工控机,常被称为“环境数据采集器”或“环保数据终端”,是一种专门用于环境监测领域的工业计算机。它具备强大的数据处理能力、稳定的运行性能和多种接口,能够实时采集、处理和传输环境监测数据。这些数据包括空气质量、水质、噪声、…

k8s概念及k8s集群部署(Centos7)

Centos7部署k8s集群 部署之前,先简单说下k8s是个啥: 一、k8s简介: k8s,全称:kubernetes,它可以看作是一个分布式系统支撑平台。k8s的作用: 1、故障自愈: k8s这个玩意可以监控容器…

HTML 文本格式化

HTML 文本格式化 在构建网页的过程中,文本的格式化是一个至关重要的环节。HTML(HyperText Markup Language)提供了丰富的标签和属性来帮助我们实现各种文本格式化的需求。本文将详细介绍HTML中常见的文本格式化方法,包括字体、颜…

Manus AI Agent 技术解读:架构、机制与竞品对比

目录 1. Manus 是什么? 1.1 研发背景 1.2 技术特点 1.3 工具调用能力 1.4 主要应用场景 2. Manus 一夜爆火的原因何在? 2.1 技术突破带来的震撼 2.2 完整交付的产品体验 2.3 生态与开源策略 3. Manus 与其他 AI Agent 的对比分析 3.1 技术架构…

【学习思维模型】

学习思维模型 一、理解类模型二、记忆类模型三、解决问题类模型四、结构化学习模型五、效率与习惯类模型六、高阶思维模型七、实践建议八、新增学习思维模型**1. 波利亚问题解决四步法****2. 主动回忆(Active Recall)****3. 鱼骨图(因果图/Ishikawa Diagram)****4. MECE原则…

PCIE接口

PCIE接口 PIC接口介绍PIC总线结构PCI总线特点PCI总线的主要性能PIC的历程 PCIE接口介绍PCIe接口总线位宽PCIE速率GT/s和Gbps区别PCIE带宽计算 PCIE架构PCIe体系结构端到端的差分数据传递PCIe总线的层次结构事务层数据链路层物理层PCIe层级结构及功能框图 PCIe链路初始化PCIe链路…

大语言模型(LLM)和嵌入模型的统一调用接口

ChatModelFactory、EmbeddingModelFactory 讲解代码:import os from dotenv import load_dotenv, find_dotenv_ load_dotenv(find_dotenv())from langchain_openai import ChatOpenAI, OpenAIEmbeddings, AzureChatOpenAI, AzureOpenAIEmbeddingsclass ChatModelF…

在Linux开发板中使用.NET实现音频开发

本文将以Linux开发板为基础,使用ALSA音频框架和C#语言,演示如何实现基础的音频录制与播放功能。 1. 背景 音频处理是嵌入式开发中常见的需求,无论是语音交互、环境监测还是多媒体应用都离不开音频模块的支持。在Linux系统中,ALSA…

Windows控制台函数:控制台输出函数WriteConsoleA()

目录 什么是 WriteConsoleA? 函数签名 参数详解 返回值 一个最简单的例子 跟 ReadConsoleA 对比 再试一个有趣的例子 为什么传地址给 lpNumberOfCharsWritten? 注意事项 什么是 WriteConsoleA? WriteConsoleA 是一个 Windows API 函…

【贪心算法】将数组和减半的最小操作数

1.题目解析 2208. 将数组和减半的最少操作次数 - 力扣(LeetCode) 2.讲解算法原理 使用当前数组中最大的数将它减半,,直到数组和减小到一半为止,从而快速达到目的 重点是找到最大数,可以采用大根堆快速达到…

Prompt engineering设计原则

目录 一、清晰具体的prompt1. 使用分隔符2. 结构化的输出(JSON)3. 要求模型检查是否满足条件4. 提供少量案例 二、给模型时间去思考1.指定完成任务所需的步骤2. 指导模型在下结论之前找出一个自己的解法 一、清晰具体的prompt 一个合理的prompt设计决定…

Vue 过滤器 filter(s) 的使用

即过滤器是用来格式化数据的一个函数。过滤器不会修改原始数据,它的作用是过滤数据,就是对数据进行加工处理并返回处理后的数据,比如做一些数据格式上的修改,状态转换等。 过滤器分为两种 组件内的过滤器(组件内有效) 全局过滤器…