Selenium可以在服务器上运行以自动执行任务,还是需要浏览器来运行其中的任务

sam*_*sam 1 selenium selenium-webdriver

我正在阅读Selenium文档,我无法确定您是否可以在服务器上运行它 - 作为更大的Web应用程序的一部分.

即.Web应用程序中发生的事情会触发自动运行的Selenium脚本,然后将结果返回给Web应用程序.

这可能是Selenium的使用还是总是需要一个实际的浏览器来运行其中的任务,还是可以为自己运行虚拟浏览器?


Pet*_*ček 10

Selenium总是需要一个浏览器实例来控制.

幸运的是,有些浏览器并不像你所知道的常见浏览器那么重.您不必打开IE/Firefox/Chrome/Opera.您可以使用HtmlUnitDriver哪个控件HTMLUnit - 一个没有任何UI的无头Java浏览器.或者是一个PhantomJsDriver驱动器PhantomJS- 在WebKit上运行的另一个无头浏览器.

那些无头浏览器的内存更少,通常更快(因为它们不需要渲染任何东西),它们不需要图形界面就可以用于它们运行的​​计算机,因此很容易在服务器端使用.

  • 实际上,就我所知,PhantomJS在内存中呈现页面.你甚至可以用它截取屏幕截图! (2认同)
  • @Pengin 答案已经有 8 年了,并且发生了很多变化。Selenium 仍然占据主导地位,PhantomJS 已不复存在。还有一些新的东西,比如 https://github.com/microsoft/Playwright-Java 等等。我不再知道哪个内存库是最好的。对不起。 (2认同)

haf*_*031 5

我设法在服务器Selenium上运行CentOS。我用过Chromedriver。我发现Chromedriver可能需要浏览器(尽管据报道最新的 Chrome可以在没有浏览器的情况下运行......我没有尝试过)。但在服务器中,您不需要为此目的GUI运行浏览器( )。Google-Chrome

以下是我遵循的步骤:

  • 我们需要安装 Google Chrome(如果未安装):
# FOR CENTOS
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
yum localinstall google-chrome-stable_current_x86_64.rpm

# FOR UBUNTU (I didn't validate it myself, as I only worked with CentOS)
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt-get install -f
Run Code Online (Sandbox Code Playgroud)
  • 现在通过检查其版本来检查是否安装了 Google Chrome:
google-chrome --version
Run Code Online (Sandbox Code Playgroud)
  • 如果上述步骤没问题,请立即Chromedriver根据Google Chrome您拥有的版本下载适合您的发行版的版本。开始Chromedriver使用:Chrome 驱动程序 | 下载
  • 现在您必须包含几个选项来运行它。(没有--no-sandbox浏览Chrome器将无法运行。有些人还说将此选项保留为第一个选项。另一些人说只有这个选项就足够了......阅读第三个参考文献中提到的帖子的评论。):
from selenium.webdriver.chrome.options import Options
from selenium import webdriver

options = Options()
options.add_argument('--no-sandbox')
options.add_argument("--headless")
options.add_argument('--disable-dev-shm-usage')
Run Code Online (Sandbox Code Playgroud)
  • 现在显示Chromedriver的目录(以下显示当前目录)并传递这些选项:
driver = webdriver.Chrome('./chromedriver', options = options)
Run Code Online (Sandbox Code Playgroud)
  • 最后开始Selenium爬行:
driver.get(YOUR_DESIRED_LINK)
Run Code Online (Sandbox Code Playgroud)

参考: