在没有浏览器的情况下使用 Selenium 进行网络抓取

Webscraping with Selenium without browser

提问人:emil banning 提问时间:9/15/2020 最后编辑:emil banning 更新时间:12/31/2020 访问量:428

问:

我想使用 Python 模块 Selenium 通过 jupyter 笔记本进行 Web 抓取。jupyter 笔记本在没有任何 Web 浏览器的 docker-container 中运行。我希望能够分发笔记本,以便其他用户可以复制网络抓取。笔记本在通用的 jupyter lab 容器上运行,并且无法更新容器以包含浏览器。

我尝试了很多事情:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

还有这个:

!pip install chromedriver-binary
from selenium import webdriver
import chromedriver_binary  # Adds chromedriver binary to path

driver = webdriver.Chrome('/opt/conda/lib/python3.7/site-packages/chromedriver_binary')

对于最后一种情况,我使用

import chromedriver_binary
print(chromedriver_binary.__file__)

但不幸的是,我无法使它发挥作用。

python docker selenium-webdriver jupyter-notebook chrome-web-driver

评论

0赞 Alexandra Dudkina 9/18/2020
docker 容器中使用哪个操作系统?这个答案显示了如何为在 ubuntu 上运行的 google colab 安装 selenium webdriver:stackoverflow.com/questions/51046454/...

答:

1赞 lscoughlin 9/15/2020 #1

Chrome 驱动程序依赖于 Chrome 的本地安装 - 因此您必须先修改用于安装 Chrome 的 Docker 映像。

评论

0赞 emil banning 9/15/2020
您在技术上是正确的,但我使用的是 jupyter lab 的容器化实例,我无法修改 docker 映像。所以我希望我能找到一个解决方法,然后安装浏览器
0赞 GriffoGoes 4/1/2022
派对有点晚了,但我遇到了同样的问题,所以我用抓取工具创建了一个 jupyter 堆栈,并 jupyter-docker-stacks.readthedocs.io/en/latest/using/ 添加到社区堆栈中......