配置windows环境下独立浏览器爬虫方案【不依赖系统环境与chrome】

引言

由于部署浏览器爬虫的机器浏览器版本不同,同时也不想因为部署了爬虫导致影响系统浏览器数据,以及避免爬虫过程中遇到的chrome与webdriver版本冲突。我决定将特定版本的chrome浏览器与webdriver下载到项目目录内,同时chrome_driver在初始化时指定项目目录内的chrome与webdriver。

下载指定版本的chrome与webdriver

选择版本为:version: 123.0.6312.122 (r1262506)
机器为windows 64位系统,按照以下操作下载chrome与webdriver
chrome下载链接
chrome webdriver下载链接
chrome webdriver下载链接

下载完毕后将压缩包解压,将webdriver目录下的chromedriver.exe文件放到chrome应用目录内

在这里插入图片描述
在这里插入图片描述
移动过后可以时这样放置,只要在项目的爬虫通过相对路径能访问到即可
在这里插入图片描述

更新webdriver初始化代码

# 指定chrome的位置
chrome_binary_path = r'./Chrome/chrome-win64/chrome.exe'
# 指定 Chrome 驱动的位置
chrome_driver_path = r'./Chrome/chromedriver.exe'def driver_init_new():############################ chrome指定版本与特定位置初始化 ############################# 创建 ChromeOptions 对象并设置 Chrome 应用程序位置chrome_options = webdriver.ChromeOptions()chrome_options.binary_location = chrome_binary_path# chrome_options.add_argument('--headless') # 无头模式chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])# 禁止显示浏览器窗口# chrome_options.add_argument('--window-position=-32000,-32000')# 创建 Service 对象chrome_service = webdriver.chrome.service.Service(chrome_driver_path)# 创建 Chrome 浏览器驱动对象,使用 options 和 service 参数browser = webdriver.Chrome(options=chrome_options, service=chrome_service)return browser
chrome_options.binary_location = chrome_binary_path
chrome_service = webdriver.chrome.service.Service(chrome_driver_path)

这两行代码指定特chrome的路径与driver的位置,这样就能直接使用我们刚刚配置的chrome浏览器用于爬虫开发了。

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

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

相关文章

我使用 GPT-4o 帮我挑西瓜

在 5 月 15 日,OpenAI 旗下的大模型 GPT-4o 已经发布,那时网络上已经传开, 但很多小伙伴始终没有看到 GPT-4o 的体验选项。 在周五的时候,我组建的 ChatGPT 交流群的伙伴已经发现了 GPT-4o 这个选项了,是在没有充值升…

NSSCTF-Web题目21(文件上传-phar协议、RCE-空格绕过)

目录 [NISACTF 2022]bingdundun~ 1、题目 2、知识点 3、思路 [FSCTF 2023]细狗2.0 4、题目 5、知识点 6、思路 [NISACTF 2022]bingdundun~ 1、题目 2、知识点 文件上传,phar伪协议 3、思路 点击upload,看看 这里提示我们可以上传图片或压缩包&…

应对.Kastaneya勒索病毒:保护您的数据安全

导言: 随着科技的发展,网络安全问题也日益严峻。最近,一种名为.Kastaneya的勒索病毒开始在网络上出现,对用户的计算机和数据造成严重威胁。本文91数据恢复将介绍.Kastaneya勒索病毒的特点及其传播方式,并提供一些有效…

Unity 解包工具(AssetStudio/UtinyRipper)

文章目录 1.UtinyRipper2.AssetStudio 1.UtinyRipper 官方地址: https://github.com/mafaca/UtinyRipper/ 下载步骤: 2.AssetStudio 官方地址: https://github.com/Perfare/AssetStudio 下载步骤:

【HarmonyOS NEXT】鸿蒙多线程Sendable开发

非共享模块在同一线程内只加载一次,在不同线程间会加载多次,单例类也会创建多次,导致数据不共享,在不同的线程内都会产生新的模块对象。 基础概念 Sendable协议 Sendable协议定义了ArkTS的可共享对象体系及其规格约束。符合Sen…

STM32mp157aaa按键中断实验

效果图&#xff1a; 源码&#xff1a; #include "key.h" void hal_key1_rcc_gpio_init() {// 使能GPIOF组RCC->MP_AHB4ENSETR | (0x1 << 5);// 设置引脚位输入模式GPIOF->MODER & (~(0X3 << 18));GPIOF->MODER & (~(0X3 << 16))…

[C++11] 退出清理函数(quick_exit at_quick_exit)

说明&#xff1a;在C11中&#xff0c;quick_exit和at_quick_exit是新增的快速退出功能&#xff0c;用于在程序终止时提供一种快速清理资源的方式。 quick_exit std::quick_exit函数允许程序快速退出&#xff0c;并且可以传递一个退出状态码给操作系统。与std::exit相比&#…

[今日一水]论坛该如何选择

想要搭建一个论坛其实选择是很多的&#xff0c;就比如国内的dz&#xff0c;国外的xenforo和flarum&#xff0c;具体还是根据的面向的用户和需求来&#xff0c;就比如flarum它的界面肯定是三个论坛里最现代化的&#xff0c;但是xenforo社区生态很强&#xff0c;而dz对于国内用户…

VMware创建新虚拟机教程(保姆级别)

&#x1f4e2; 续上一篇 最新超详细VMware虚拟机安装完整教程-CSDN博客 &#xff0c;本章将详细讲解VMware创建虚拟机。 一、创建新的虚拟机 点击【创建新的虚拟机】&#xff01; 点击【自定义&#xff08;高级&#xff09;】> 下一步&#xff01; > 默认下一步&#x…

耐克:老大的烦恼

股价暴跌20%&#xff0c;老大最近比较烦。 今天说说全球&#xff08;最&#xff09;大运动品牌——耐克。 最近耐克发布2023-2024财年业绩&#xff08;截止于2024.5.31&#xff09;&#xff0c;还是爆赚几百亿美元&#xff0c;还是行业第一&#xff0c;但业绩不及预期&#xf…

Redis为什么设计多个数据库

​关于Redis的知识前面已经介绍过很多了,但有个点没有讲,那就是一个Redis的实例并不是只有一个数据库,一般情况下,默认是Databases 0。 一 内部结构 设计如下: Redis 的源码中定义了 redisDb 结构体来表示单个数据库。这个结构有若干重要字段,比如: dict:该字段存储了…

backbone是什么?

在深度学习中&#xff0c;特别是计算机视觉领域&#xff0c;"backbone"&#xff08;骨干网络&#xff09;是指用于提取特征的基础网络。它通常是卷积神经网络&#xff08;CNN&#xff09;&#xff0c;其任务是从输入图像中提取高层次特征&#xff0c;这些特征然后被用…

【第12章】MyBatis-Plus条件构造器(下)

文章目录 前言一、使用 TypeHandler二、使用提示三、Wrappers四、线程安全性五、使用 Wrapper 自定义 SQL1.注意事项2.示例3. 使用方法 总结 前言 本章继续上章条件构造器相关内容。 一、使用 TypeHandler 在 wrapper 中使用 typeHandler 需要特殊处理利用 formatSqlMaybeWit…

scikit-learn教程

scikit-learn&#xff08;通常简称为sklearn&#xff09;是Python中最受欢迎的机器学习库之一&#xff0c;它提供了各种监督和非监督学习算法的实现。下面是一个基本的教程&#xff0c;涵盖如何使用sklearn进行数据预处理、模型训练和评估。 1. 安装和导入包 首先确保安装了…

【漏洞复现】D-Link NAS 未授权RCE漏洞(CVE-2024-3273)

0x01 产品简介 D-Link 网络存储 (NAS)是中国友讯&#xff08;D-link&#xff09;公司的一款统一服务路由器。 0x02 漏洞概述 D-Link NAS nas_sharing.cgi接口存在命令执行漏洞&#xff0c;该漏洞存在于“/cgi-bin/nas_sharing.cgi”脚本中&#xff0c;影响其 HTTP GET 请求处…

类和对象-友元-全局函数做友元

全局函数做友元 #include<iostream> using namespace std;class Building {//goodGay全局函数是Building好朋友&#xff0c;可以访问Building的私有成员 friend void goodGay(Building *building); public:Building(){m_SittingRoom "客厅";m_BedRoom &qu…

MyBatis学习笔记-数据脱敏

如果项目需要对一些特殊、敏感的数据进行脱敏处理。根据实际的需求可以考虑在读写的过程中分别做脱敏操作。 一、写过程参数脱敏 主要是使用mybatis框架提供的Interceptor实现。需要考虑不同类型的参数解析处理方式不同。 @Slf4j @AllArgsConstructor @Intercepts({@Signatu…

【vuejs】vue-router 之 addRoute 动态路由的应用总结

1. Vue Router 概述 Vue Router 是 Vue.js 官方的路由管理器&#xff0c;用于构建单页面应用。它与 Vue.js 深度集成&#xff0c;让开发者能够轻松地构建具有复杂用户界面的单页面应用。Vue Router 允许你定义不同的路由&#xff0c;并通过 router-view 组件在应用中显示匹配的…

【CSS】如何实现分栏布局

在CSS分栏布局中&#xff0c;设置宽度和样式是一个基本且重要的步骤。这可以通过直接应用样式到列元素&#xff08;通常是div元素&#xff09;上来实现。以下是一些常用的方法来设置分栏布局的宽度和样式&#xff1a; 1. 使用百分比宽度 使用百分比宽度可以使列的大小相对于其…

MyBatis学习笔记-参数转义处理

查询参数中如果有传入%的情况,数据会被全量返回。类似的可能还会有一些特殊符号的情况存在。这个时候可能需要在查询数据的时候进行参数转义处理。一般情况可能会考虑选择下面的两种方式处理。 一、基于Filter处理 主要通过实现Filter接口,自定义HttpServletRequestWrapper…