一键自动化博客发布工具,chrome和firfox详细配置

2024-05-05 12:12

本文主要是介绍一键自动化博客发布工具,chrome和firfox详细配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

blog-auto-publishing-tools博客自动发布工具现在已经可以同时支持chrome和firefox了。

很多小伙伴可能对于如何进行配置和启动不是很了解,今天带给大家一个详细的保姆教程,只需要跟着我的步骤一步来就可以无障碍启动了。

前提条件

前提条件当然是先下载 blog-auto-publishing-tools这个博客自动发布工具,地址如下:https://github.com/ddean2009/blog-auto-publishing-tools

chrome配置

现在的主流浏览器肯定是chrome无疑了。所以我们首先聊一聊如何实现对chrome浏览器的支持。

使用selenium正常启动chrome浏览器

selenium本身就自带对chrome的支持,所以在selenium中使用chrome也是一个非常简单的事情。

  1. 首先你需要下载安装chrome。

  2. 然后使用pip来安装selenium:

pip install selenium
  1. 你需要从ChromeDriver下载页面下载与你的Chrome浏览器版本相对应的ChromeDriver。确保你下载的是与你的操作系统和Chrome版本相匹配的版本。
  2. 然后就可以在代码中使用了:
from selenium import webdriver  # 指定ChromeDriver的路径  
driver_path = '/path/to/your/chromedriver'  # 替换为你的ChromeDriver路径  # 创建一个新的Chrome浏览器实例  
driver = webdriver.Chrome(executable_path=driver_path)  # 访问一个网站  
driver.get('http://www.example.com')  # ... 在这里执行你的Selenium操作 ...  # 关闭浏览器  
driver.quit()

简单是简单,但是这样做的缺点是每次都需要下载一个新的,内置的chrome浏览器,所以在国内的网络环境下,很多人以为是程序被卡死了。

实际上并不是,只是网络慢而已。

事实上,我们已经已经在使用chrome了,为什么不能attach到现有的chrome上运行selenium呢?

使用selenium连接到现有的chrome浏览器

这是blog-auto-publishing-tools正在做事情。

优点: 这样做的优点有两个。

第一就是不需要重新下载chrome浏览器。

第二就是可以借助现有浏览器的登录态,不需要每次都在程序中重新登录。因为有些网站的登录条件是很复杂的。比如腾讯云,你需要时不时的进行手机扫码才能登录。

我们的步骤如下:

  1. 下载并安装 Chrome。
  2. 下载chrome Driver Chrome Driver。
  3. chrome 以debug模式启动

如果是mac电脑,那么可以先给chrome设置一个alias

alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"

以debug模式启动

chrome --remote-debugging-port=9222

!!! 注意!!!
chrome启动之后,一定要新开一个空白tab页,或者随便打开一个网站,否则后面的selenium可能会出现假死的情况

在命令行你会看到类似下面的内容:

DevTools listening on ws://127.0.0.1:9222/devtools/browser/d4d05dd2-5b74-4380-b02d-12baa123445

这行ws很重要,我们把它记下来。

如果你是windows,那么在chrome的快捷方式后面加上 --remote-debugging-port=9222 参数。

image-20240503190824756

启动chrome,输入chrome://version 检测 --remote-debugging-port=9222 是否出现在页面上。

image-20240503190854471

然后输入:

http://localhost:9222/json/version

获得 webSocketDebuggerUrl:

image-20240503190939248

  1. 修改配置文件

修改config/common.yaml 里面的内容:

# chrome driver地址
service_location: /Users/wayne/Downloads/work/chromedriver-mac-arm64/chromedriver
# chrome调试地址
debugger_address: localhost:9222/devtools/browser/4aab2b8b-112c-48a3-ba38-12baa123445

把service_location和debugger_address修改为你自己本机的配置。

你也可以使用简单版本的 debugger_address: localhost:9222

我在windows环境下测试过是可以连接的。

在mac环境下有时可以连接,有时候不能连接,大家可以自行测试。

这样,使用下面的代码就可以连接到现有的chrome了:

    # 启动浏览器驱动服务service = selenium.webdriver.chrome.service.Service(common_config['service_location'])# Chrome 的调试地址debugger_address = common_config['debugger_address']# 创建Chrome选项,重用现有的浏览器实例options = selenium.webdriver.chrome.options.Options()options.page_load_strategy = 'normal'  # 设置页面加载策略为'normal' 默认值, 等待所有资源下载,options.add_experimental_option('debuggerAddress', debugger_address)# 使用服务和选项初始化WebDriverdriver = webdriver.Chrome(service=service, options=options)

firefox配置

除了chrome之外,用的最多的应该就是firefox了。

所以blog-auto-publishing-tools也提供了对firefox的支持。

使用selenium正常启动firefox浏览器

要常规使用firefox,你需要下面几部:

  1. 下载并安装 Firefox。

  2. 下载geckodriver 驱动.下载与你的Firefox浏览器版本相对应的geckodriver。确保你下载的是与你的操作系统和Firefox版本相匹配的版本。

  3. 在代码中使用:

from selenium import webdriver  # 指定geckodriver的路径  
driver_path = '/path/to/your/geckodriver'  # 替换为你的geckodriver路径  # 创建一个新的Firefox浏览器实例  
driver = webdriver.Firefox(executable_path=driver_path)  # 访问一个网站  
driver.get('http://www.example.com')  # ... 在这里执行你的Selenium操作 ...  # 关闭浏览器  
driver.quit()

同样的,因为网络问题,所以这种方式在国内的环境中会很慢。

我们看看另外一种方式。

使用selenium连接到现有的firefox浏览器

  1. 下载并安装 Firefox。

  2. 下载geckodriver 驱动.下载与你的Firefox浏览器版本相对应的geckodriver。确保你下载的是与你的操作系统和Firefox版本相匹配的版本。

  3. 在firefox的启动命令之后加上: -marionette -start-debugger-server 2828

image-20240504120509315

注意,这里的端口一定要是2828,不能自定义。

这时候你如果打开firefox,就会看到导航栏变成了红色,表示你已经启动了远程调试模式。

image-20240504120607831

输入about:config

可以看到marionette.port的端口就是2828。

  1. 修改配置文件

修改config/common.yaml 里面的内容:

# firefox driver地址
service_location: "D:\\downloads\\geckodriver-v0.34.0-win32\\geckodriver.exe"

把driver_type修改为firefox。

#driver_type: "chrome"
driver_type: "firefox"

接下来就可以在程序中使用了:

 # 启动浏览器驱动服务service = selenium.webdriver.firefox.service.Service(common_config['service_location'],service_args=['--marionette-port', '2828','--connect-existing'])# 创建firefox选项,重用现有的浏览器实例options = selenium.webdriver.firefox.options.Options()options.page_load_strategy = 'normal'  # 设置页面加载策略为'normal' 默认值, 等待所有资源下载,driver = webdriver.Firefox(service=service, options=options)

总结

我在mac上测试了chrome,在windows上同时测试了chrome和firefox。都是可以用的。大家有问题可以私信我。

点我查看更多精彩内容:www.flydean.com

这篇关于一键自动化博客发布工具,chrome和firfox详细配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961692

相关文章

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

maven私服配置全过程

《maven私服配置全过程》:本文主要介绍maven私服配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用Nexus作为 公司maven私服maven 私服setttings配置maven项目 pom配置测试效果总结使用Nexus作为 公司maven私