我的目标是用来自docker容器的python驱动的硒刮网。
我环顾四周,找不到安装了以下所有内容的码头图像:
是否有人能够将我与所有这些安装并协同工作的码头图像链接?
也许建立我自己的并不像我想的那么困难,但到目前为止它已经提到了我。
赞赏任何建议。
答案 0 :(得分:3)
我喜欢 Harald 的解决方案。 但是,截至 2021 年,我的环境需要进行一些修改。
Docker version 20.10.5, build 55c4c88
我按如下方式更改了 Dockerfile。
FROM selenium/standalone-chrome
USER root
RUN apt-get update && apt-get install python3-distutils -y
RUN wget https://bootstrap.pypa.io/get-pip.py
RUN python3 get-pip.py
RUN python3 -m pip install selenium
答案 1 :(得分:2)
尝试https://github.com/SeleniumHQ/docker-selenium。
安装了python:
$ docker run selenium/standalone-chrome python3 --version
Python 3.5.2
说明书指示您使用
启动它docker run -d -p 4444:4444 --shm-size=2g selenium/standalone-chrome
修改强>
为了让selenium能够通过python运行,你需要安装它们。创建此Dockerfile
:
FROM selenium/standalone-chrome
USER root
RUN wget https://bootstrap.pypa.io/get-pip.py
RUN python3 get-pip.py
RUN python3 -m pip install selenium
然后你可以用
运行它docker build . -t selenium-chrome && \
docker run -it selenium-chrome python3
与普通python
泊坞窗图片相比的优势在于,您不需要安装chromedriver本身,因为它来自selenium/standalone-chrome
。
答案 2 :(得分:0)
我最近使用包含硒的版本更新了此图片:
https://hub.docker.com/r/joyzoursky/python-chromedriver/
它使用python3作为基本图像并安装chromedriver,chrome和selenium(作为pip包)来构建。我自己使用了基于alpine的python3版本,因为图像尺寸较小。
requirements.txt
查看图片是否适合您的情况,因为您可以通过requirements.txt
文件将selenium与其他软件包一起安装以构建您自己的图像,或者从Dockerfiles中获取参考资料。
如果您想要从selenium中安装更多的软件包,您可以构建自己的图像,如下例所示:
首先,在您的工作目录中,您可能有selenium==3.8.0
requests==2.18.4
urllib3==1.22
... (your list of packages)
存储要安装的软件包版本:
FROM joyzoursky/python-chromedriver:3.6-alpine3.7
RUN mkdir packages
ADD requirements.txt packages
RUN pip install -r packages/requirements.txt
然后在相同的目录中创建Dockerfile,如下所示:
docker build -t yourimage .
然后构建图像:
$(function (){
var $article_table = $('#article_table');
$.ajax({
type: 'GET',
dataType: 'json',
url: '/articles',
success: function(articles){
$.each(articles, function(i, article) {
$article_table.append('<tr><td>'+article.name+'</td></tr>')
});
}
});
$('#form_article').submit(function(){
//var name = $('#article_name').val();
var name = JSON.parse(xhr.responseText);
$.ajax({
type: 'POST',
url: '/articles',
dataType: 'json',
data: name,
success: function(data){
//alert(data.id);
console.log('success',data);
//debugger;
},
error: function(){
}
});
});
这与selenium官方的不同,因为selenium作为pip包安装到python基础映像。然而,它由个人(我自己)主持,因此可能有更高的停止维护的风险。