【问题标题】:Docker container returns an error with selenium webdriverDocker 容器使用 selenium webdriver 返回错误
【发布时间】:2021-02-18 14:41:00
【问题描述】:

我已经在这个问题上苦苦挣扎了一段时间。我正在尝试构建一个 Docker 容器,该容器使用 selenium Webdriver 抓取一些数据,但我收到一条错误消息,指出驱动程序不可调用。检查:

 > [stage-1 6/6] RUN python db_starter.py:
   #10 35.99 Traceback (most recent call last):
   #10 35.99   File "db_starter.py", line 3, in <module>
   #10 35.99     run_backend.update_db()
   #10 35.99   File "/app/run_backend.py", line 11, in update_db
   #10 35.99     search_page = donwload_search_page(query, page)
   #10 35.99   File "/app/get_data.py", line 19, in donwload_search_page
   #10 35.99     soup = BeautifulSoup(html, 'html.parser')
   #10 35.99 TypeError: 'module' object is not callable

这是我的 Dockerfile,我用 Chrome 和 Firefox 都试过了,错误是一样的:

FROM scrapinghub/scrapinghub-stack-scrapy:1.3
from python:3.7-slim
COPY . /app
WORKDIR /app

RUN apt-get update                             \
&& apt-get install -y --no-install-recommends \
ca-certificates curl firefox-esr           \
&& rm -fr /var/lib/apt/lists/*                \
&& curl -L https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux64.tar.gz | tar xz -C /usr/local/bin \
&& apt-get purge -y ca-certificates curl


RUN pip install --no-cache-dir -r requirements.txt
RUN python db_starter.py

这里是代码崩溃的地方:

import requests as rq
import bs4 as BeautifulSoup
import time
import os
from selenium import webdriver

def donwload_search_page(query, page):
    options = webdriver.FirefoxOptions()
    options.add_argument("--window-size 1920,1080")
    options.add_argument("--headless")
    driver = webdriver.Firefox(options=options)
    url = "https://www.amazon.com/s?k={query}&page={page}".format(query = query, page = page)
    driver.get(url)
    html = driver.page_source
    soup = BeautifulSoup(html, 'html.parser')
    driver.close()
    time.sleep(2)

    return soup.text

我真的不明白为什么它说模块不可调用,我在我的机器上运行代码,在文件夹中有 geckodriver 的 jupyter 笔记本中运行它,当用于尝试构建容器时,它返回这个错误。

谁能帮我解决这个问题?

谢谢!

【问题讨论】:

  • 向我们展示您的导入以及是否有任何分配给BeautifulSoup
  • 你能包含更多的python代码吗?特别是import 行?
  • 我已经添加了导入行。 @克劳斯

标签: python docker selenium-webdriver beautifulsoup wsl-2


【解决方案1】:

我发现了错误。这是初学者的错误。

import bs4 as Beautifulsoup.

应该是

from bs4 import BeautifulSoup.

感谢那些检查。

【讨论】:

    猜你喜欢
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2015-08-26
    • 2017-04-11
    • 2021-03-31
    相关资源
    最近更新 更多