无头浏览器与Selenium:探索无界爬虫的奇妙世界

selenium设置无头浏览器

背景

​ 我们之前的selenium都是浏览器驱动自动打开一个网页,执行相关操作,其实也可以让其后台显示,不用在前台显示。

​ 要设置无头浏览器,可以使用Selenium的Headless模式。在Headless模式下,Selenium会在后台运行浏览器,而不会显示实际的浏览器窗口。

优点:

无头浏览器(Headless Browser)是指在没有图形用户界面(GUI)的情况下运行的浏览器。它能够执行和显示网页,但不会显示实际的浏览器窗口。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 创建ChromeOptions对象
chrome_options = Options()
# 在ChromeOptions中设置无头模式
chrome_options.add_argument("--headless")
# 实例化Chrome浏览器对象,并将ChromeOptions对象传递给它
driver = webdriver.Chrome(options=chrome_options)
# 在无头浏览器中执行相关操作
driver.get("https://www.example.com")
# 进行其他操作...
# 关闭浏览器
driver.quit()

案例:

实战案例一:

​ 要求:使用无头浏览器访问百度,然后截个图保存到本地

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time# 创建一个参数对象,用来控制chrome以无界面模式打开
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
# 驱动路径
path = './chromedriver.exe'
# 创建浏览器对象
browser = webdriver.Chrome(executable_path=path,options=chrome_options)# 上网
url = 'http://www.baidu.com/'
browser.get(url)
time.sleep(3)
# 截图 看个结果
browser.save_screenshot('baidu.png')browser.quit()

在这里插入图片描述

实战案例二:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options# 驱动路径
path = r'D:\Downloads\xx\chromedriver-win64\chromedriver.exe'# 创建一个参数对象,用来控制Chrome以无界面模式打开
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')# 创建浏览器对象
browser = webdriver.Chrome(executable_path=path, options=chrome_options)# 打开网页
url = 'http://www.baidu.com'
browser.get(url)# 定位元素并执行操作
search_input = browser.find_element_by_id('kw')  # 根据ID定位搜索输入框
search_input.send_keys('Hello, World!')  # 在搜索输入框中输入文本search_button = browser.find_element_by_id('su')  # 根据ID定位搜索按钮
search_button.click()  # 点击搜索按钮# 等待页面加载
browser.implicitly_wait(5)  # 隐式等待5秒钟# 获取搜索结果
results = browser.find_elements_by_css_selector('.result')  # 根据CSS选择器定位搜索结果
for result in results:print(result.text)  # 打印搜索结果的文本内容# 关闭浏览器
browser.quit()

在这里插入图片描述

​ 首先创建了一个参数对象chrome_options,用来控制Chrome以无界面模式打开。然后使用webdriver.Chrome()方法创建了一个Chrome浏览器对象,并传入驱动路径和参数对象。接下来,使用get()方法打开了百度的网页。然后使用find_element_by_*方法定位了搜索输入框和搜索按钮,并执行了相应的操作。在搜索结果的部分,使用find_elements_by_css_selector()方法定位了所有的搜索结果,并通过循环打印了每个搜索结果的文本内容。最后使用quit()方法关闭了浏览器。

温馨提示:

仅供学习参考,请勿用于数据获取。本案例仅旨在展示数据获取技术的应用和原理,并提供学习参考。请注意,未经授权的数据获取可能涉及法律和道德问题。在进行任何数据获取活动之前,请确保遵守相关法律法规和网站的规定。

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

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

相关文章

精密、低噪、CMOS、轨到轨输入输出运算放大器MS8605/8606

产品简述 MS8605 、 MS8606 是单通道和双通道的轨到轨输入输出单电 源供电运放。它们具有低的失调电压、低的输入电压电流噪声和 宽的信号带宽。 低失调、低噪、低输入偏置电流和宽带宽的特性结合使得 MS860X 运放适用于各种应用。其优异的性能能够应用于滤波 器、积分…

QT Windos平台下打包应用程序

一、windeployqt.exe windeployqt:是 Qt 框架自带的一个工具,用于将一个 Qt 应用程序在 Windows 操作系统下进行打包。它可以通过扫描应用程序的依赖项获取所需的 Qt 库文件、插件和翻译文件,以及复制应用程序可执行文件和所需的依赖项到指定…

Python---time库

目录 时间获取 时间格式化 程序计时 time库包含三类函数: 时间获取:time() ctime() gmtime() 时间格式化:strtime() strptime() 程序计时:sleep() perf_counter() 下面逐一介绍&#…

AWS Remote Control ( Wi-Fi ) on i.MX RT1060 EVK - 1 “建立开发环境”

这个系列的文章将叙述如何借由 NXP 的“evkmimxrt1060_aws_remote_control_wifi_nxp”这支 Sample Code,达到 NXP RT1060EVK 经由 U-Blox EVK-JODY-W263 将资讯传到 AWS 上,并可借由手机对 RT1060 EVK 的 LED 进行远端控制。 整体架构如下图所示&#x…

大名鼎鼎的CleanMyMac X软件值不值得下载?

今天给大家推荐大名鼎鼎的Clean My Mac X(以下简称CMM X),它是Mac上一款美观易用的系统优化清理工具,也是小编刚开始用Mac时的装机必备。它能够清理系统垃圾,提升电脑的运行速度,卸载许久不用的软件&#x…

横向扩展统一存储与备份服务器功能

Infortrend 更新了GS,GSe,GSe Pro统一存储系列的备份服务器功能。该功能降低数据备份成本,并提供灵活的备份策略。通过备份服务器功能,用户可以通过多种途径实现数据备份,包括公有云(兼容S3)、文…

WebStorm:Mac/Win上强大的JavaScript开发工具

WebStorm是JetBrains公司开发的针对Mac和Windows系统的JavaScript开发工具。它为开发者提供了一站式的代码编辑、调试、测试和版本控制等功能,帮助你更高效地进行Web开发。新版本的WebStorm 2023在性能和用户体验方面都做出了重大改进,让你的JavaScript开…

Python编程技巧 – 异常处理

Python编程技巧 – 异常处理 Python Programming Skills – Exception Handling By JacksonML 每一个程序都未必是健壮的,有时候很脆弱。只有在人的理想思维状况下,返回的结果才是正确的,如意的。 1. 错误发生及异常输出 面对种种编写有疏…

在JSP项目中编写一个接口返回JSON 供JSP界面异步请求数据

首先 我们要引入json处理的依赖工具 在 pom.xml文件的 dependency 标签中加入如下代码 <dependency><groupId>com.googlecode.json-simple</groupId><artifactId>json-simple</artifactId><version>1.1.1</version> </dependenc…

刷题记录--算法--简单

第一题 2582. 递枕头 已解答 简单 相关标签 相关企业 提示 n 个人站成一排&#xff0c;按从 1 到 n 编号。 最初&#xff0c;排在队首的第一个人拿着一个枕头。每秒钟&#xff0c;拿着枕头的人会将枕头传递给队伍中的下一个人。一旦枕头到达队首或队尾&#xff0c;传递…

CSS中 设置文字下划线 的几种方法

在网页设计和开发中&#xff0c;我们经常需要对文字进行样式设置&#xff0c;包括字体,颜色&#xff0c;大小等&#xff0c;其中&#xff0c;设置文字下划线是一种常见需求 一 、CSS种使用 text-decoration 属性来设置文字的装饰效果&#xff0c;包括下划线。 常用的取值&…

【Python系列】Python函数

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

“数”说新语向未来 | GBASE南大通用2023媒体交流会成功举办

在当前国家信创战略加速实施&#xff0c;及国民经济数字化转型&#xff0c;叠加驱动信息化行业加速发展的大形势下&#xff0c;以“数说新语-GBASE南大通用开放创新再领航”为主题的2023 GBASE南大通用媒体交流日活动在GBASE天津总部举行。来自IT168、ITPUB、韩锋频道、自主可控…

怎么隐藏电脑文件夹?文件夹隐藏方法盘点

隐藏文件夹可以有效地提高文件夹的安全性&#xff0c;避免其他人获取文件夹重要数据。那么&#xff0c;该怎么隐藏电脑文件夹呢&#xff1f;下面我们就一起来盘点一下文件夹隐藏的方法。 文件夹属性隐藏 Windows系统提供了文件夹隐藏功能&#xff0c;我们只需要在文件夹上单击…

专业130+总分400+云南大学通信847专业基础综考研经验(原专业课827)

今年专业130总分400云南大学通信上岸&#xff0c;整体考研感觉还是比较满意&#xff0c;期间也付出了很多心血&#xff0c;走过弯路&#xff0c;下面分享一下这一年考研得失&#xff0c;希望大家可以从中有所借鉴。 先说明我在考研报名前更换成云南大学的理由&#xff1a;&…

11.Java安卓程序设计-基于SSM框架的Android平台健康管理系统的设计与实现

摘要 随着人们生活水平的提高和健康意识的增强&#xff0c;健康管理系统在日常生活中扮演着越来越重要的角色。本研究旨在设计并实现一款基于SSM框架的Android平台健康管理系统&#xff0c;为用户提供全面的健康监测和管理服务。 在需求分析阶段&#xff0c;我们明确了系统的…

【Windows下】Eclipse 尝试 Mapreduce 编程

文章目录 配置环境环境准备连接 Hadoop查看 hadoop 文件 导入 Hadoop 包创建 MapReduce 项目测试 Mapreduce 编程代码注意事项常见报错 配置环境 环境准备 本次实验使用的 Hadoop 为 2.7.7 版本&#xff0c;实验可能会用到的文件 百度网盘链接&#xff1a;https://pan.baidu…

python 涉及opencv mediapipe知识,眨眼计数 供初学者参考

基本思路 我们知道正面侦测到人脸时&#xff0c;任意一只眼睛水平方向上的两个特征点构成水平距离&#xff0c;上下两个特征点构成垂直距离 当头像靠近或者远离摄像头时&#xff0c;垂直距离与水平距离的比值基本恒定 根据这一思路 当闭眼时 垂直距离变小 比值固定小于某一个…

clickhouse -- clickhouse解析复杂JSON数组

举例 - 查数据 select _id,doctorId,patientId,diagnosisList from patient_disease final where diagnosisList is not null limit 3;- 解析数组 SELECT _id,doctorId,patientId,visitParamExtractRaw(diagnosisList,diagnosisName) FROM patient_disease final where _id …

Docker构建自定义镜像

创建一个docker-demo的文件夹,放入需要构建的文件 主要是配置Dockerfile文件 第一种配置方法 # 指定基础镜像 FROM ubuntu:16.04 # 配置环境变量&#xff0c;JDK的安装目录 ENV JAVA_DIR/usr/local# 拷贝jdk和java项目的包 COPY ./jdk8.tar.gz $JAVA_DIR/ COPY ./docker-demo…