写点什么

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

作者:程序那些事
  • 2024-05-04
    广东
  • 本文字数:2847 字

    阅读完需:约 9 分钟

一键自动化博客发布工具,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 参数。



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



然后输入:


http://localhost:9222/json/version


获得 webSocketDebuggerUrl:



  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)    # 使用服务和选项初始化WebDriver    driver = 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



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


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



输入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

发布于: 刚刚阅读数: 4
用户头像

关注公众号:程序那些事,更多精彩等着你! 2020-06-07 加入

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在公众号:程序那些事!

评论

发布
暂无评论
一键自动化博客发布工具,chrome和firfox详细配置_人工智能_程序那些事_InfoQ写作社区