首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在更换代理的同时在多个docker容器中运行selenium?

如何在更换代理的同时在多个docker容器中运行selenium?
EN

Stack Overflow用户
提问于 2019-10-19 03:30:47
回答 1查看 105关注 0票数 0

提前感谢你们所有人的耐心和好意。我刚接触docker,很难使用它来完成我的任务。请让我知道,如果我张贴了任何错误,而不是投票。

我正在研究一个爬虫项目,并尝试使用docker + selenium +多个代理。这是我理想的工作流程:一台机器包含多个容器,一个爬虫(Selenium)脚本在一个容器中运行,每个脚本将完成“抓取和渲染网站->提取信息->更新本地数据库”的过程。

我知道如何在本地更改selenium中的代理。以下是我的脚本的一部分:

代码语言:javascript
复制
def get_driver():
    driver = getattr(threadLocal, 'driver', None)
    if driver is None:
        chromeOptions = webdriver.ChromeOptions()
        chromeOptions.add_argument("--headless")
        chromeOptions.add_argument('--proxy-server=http://pubproxy.com/api/proxy?format=txt')
        prefs = {
            "profile.managed_default_content_settings.images": 2,
            'disk-cache-size': 4096,
            'permissions.default.stylesheet': 2
        }
        chromeOptions.add_experimental_option('prefs', prefs)
        driver = webdriver.Chrome(chrome_options=chromeOptions)
        setattr(threadLocal, "driver", driver)
    return driver

我可以在本地使用代理完成"fetch and render website -> extract information -> update local database“过程,但我不确定是否可以将其部署在多个docker容器上。

我查看了这个帖子:How to configure special proxy settings for a remote selenium webdrive with python?。但我仍然不知道是否应该更改docker设置中的代理,因为我看到了这样一个示例:

代码语言:javascript
复制
from selenium import webdriver 
chrome = webdriver.Remote( command_executor='http://localhost:4444/wd/hub', desired_capabilities=DesiredCapabilities.CHROME )

如果我在docker设置中更改了IP,是否意味着我需要停止并重复打开它?(这对于爬虫来说不是很理想?)

我可以将配置参数传递给docker chrome selenium webdriver吗?或者我需要在构建docker容器之前预先配置代理设置吗?

任何关于实现/优化此工作流程的提示都将不胜感激。我正在看官方的docker教程,结果迷路了。真心希望有人能帮助我走上正确的方向。

EN

回答 1

Stack Overflow用户

发布于 2019-10-19 03:56:13

您可以将代理传递给函数,例如get_driver(proxy)

你可以创建一个简单的函数,从文件中的给定代理列表中选择,该文件与你的容器共享一个volume,你可以在任何时候编辑它。

代码语言:javascript
复制
def get_driver_with_random_proxy():
    with open('proxy_file.txt') as file:
        proxies_list = file.read().split('\n')
        random_proxy = random.choice(proxies_list)
    return get_driver(random_proxy)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58457108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档