如何解决Docker容器使用Selenium WebDriver返回错误
我已经在这个问题上挣扎了一段时间。我正在尝试构建一个使用Selenium Webdriver抓取一些数据的Docker容器,但出现错误,提示该驱动程序不可调用。检查:
> [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笔记本中运行了它,并且在尝试构建容器时可以返回这个错误。
任何人都可以帮我吗?
谢谢!
解决方法
我发现了错误。这是一个初学者的错误。
handlebars.Configuration.UnresolvedBindingFormatter = "('{0}' is undefined)";
。
应该是
handlebars.RegisterHelper("helperMissing",(context,arguments) =>
{
var name = arguments.Last().ToString();
return "{{" + name.Trim('[',']') + "}}";
});
。
感谢那些选中的人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。