Python - Firefox 无头
Posted
技术标签:
【中文标题】Python - Firefox 无头【英文标题】:Python - Firefox Headless 【发布时间】:2012-04-21 01:42:15 【问题描述】:在过去的几天里,我一直在使用 Selenium、Tor 和 Firefox 作为多个任务的组合。我已经设法用 Python 编写了一个简单的脚本,它通过 Selenium 控制 Firefox,而 Firefox 连接到 Tor 以保护隐私。
现在,我正在寻找一种节省资源的方法,所以我想到了在无头模式下运行 Firefox,我认为这是一个常见的功能,但似乎并非如此。我正在寻找一种方法来做到这一点。它是 Firefox 而不是基于终端的浏览器的原因是因为我在 Firefox 中使用的扩展名“TorButton”。它内置了有助于保护隐私的 javascript 注入。
如果以前有人做过(我相信很多人都做过!),我们将不胜感激一些提示,谢谢!
【问题讨论】:
【参考方案1】:自 2017 年 9 月 28 日第 56 版发布以来,Firefox 无头模式可在所有三个主要操作系统中使用。
您可以通过webdriver.FirefoxOptions()
设置无头模式,就像使用 Chrome 一样:
from selenium import webdriver
options = webdriver.FirefoxOptions()
options.add_argument('headless')
driver = webdriver.Firefox(options=options)
附:如果您使用 Selenium webdriver.FirefoxOptions() 替换为 webdriver.firefox.options.Options()
(参见 PR #5120)。
此外,使用环境变量MOZ_HEADLESS
会做同样的事情:
import os
from selenium import webdriver
os.environ['MOZ_HEADLESS'] = '1' # <- this line
driver = webdriver.Firefox()
【讨论】:
【参考方案2】:如果终于找到答案:
首先,首先做这些: 注意正确设置火狐驱动路径。
然后:
sudo apt-add-repository ppa:mozillateam/firefox-next sudo apt-get 更新 sudo apt-get install firefox xvfb Xvfb :10 -ac & 导出 DISPLAY=:10
最后运行这个命令,看看我们在执行 not 时是否有任何错误。
火狐
如果没有任何输出,只需单击 ctrl+c。 好的,然后写这段代码。
from selenium import webdriver
class FireFoxLoadTest:
def __init__(self):
# 1 - Load a fire fox web driver
self.driver = webdriver.Firefox()
def do_test(self, url):
# 2 - Start to check url on the fire fox browser
result = self.driver.get(url)
self.driver.quit()
return self.result
fire_fox = FireFoxLoadTest()
res = fire_fox.do_test('http://www.google.com')
print(res)
【讨论】:
【参考方案3】:headless firefox 正在取得进展。
2017 年 4 月 21 日起,https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/
tl;dr Firefox Nightly 在 Linux 上支持无头运行 SlimerJS。 更多平台和完全无头的 Firefox 即将推出。
【讨论】:
【参考方案4】:或者使用真正的无头浏览器,例如 Phantomjs,它重量轻且与 selenium 完美集成
from selenium import webdriver
driver=webdriver.PhantomJS('your pahtomjs exe file locaiton')
【讨论】:
问题的标题是:firefox【参考方案5】:xvfb 是执行此操作的常用方法。搜索“selenium xvfb”应该会找到很多,例如:
Is it possible to run Selenium scripts without having an X server running, too? How do I run Selenium in Xvfb? http://www.alittlemadness.com/2008/03/05/running-selenium-headless/【讨论】:
啊,这太棒了!虽然有它的 Windows 版本或一些可以在 Windows 上运行的方法吗? @Dboy1612 看起来不像,这是一个很 unix'y 的东西,***.com/questions/944086/… @Dustin 自 2017 年 9 月 28 日版本 56 发布以来,Firefox 无头模式在所有三个主要操作系统中均可用。现在你可以很容易地用 selenium 做到这一点,请在下面查看我的答案。以上是关于Python - Firefox 无头的主要内容,如果未能解决你的问题,请参考以下文章
Python/Firefox 无头抓取脚本中的“无法解码木偶的响应”消息
Selenium Firefox Python 在无头模式下运行超时初始化驱动程序
selenium.common.exceptions.InvalidSessionIdException通过Python在无头模式下使用GeckoDriver Selenium Firefox(示例代