无法 运行 python 脚本在 crontab 中包含 selenium 库
unable to run a python script having selenium library in a crontab
我一直在努力解决这个问题,但直到现在找不到任何帮助,
我正在尝试使用 crontab 运行 一个包含 selenium chrome 驱动程序的 python 脚本,
但我收到错误消息,没有名为 selenium 的模块。
虽然在笔记本里我已经下载了.py扩展文件并写了玉米作业:
crontab 中使用的命令:
CHROMEDRIVER_PATH='/Users/hiteshnettam/Downloads/chromedriver'
*/3 * * * * cd /Users/hiteshnettam/Downloads && /usr/bin/python selenium_test.py
下面写的是crontab运行上的脚本
import selenium
from selenium import webdriver
from selenium.webdriver import ActionChains
import datetime
browser1=webdriver.Chrome('/Users/hiteshnettam/Downloads/chromedriver')
browser1.get("http://www.madhavihospital.com")
element=browser1.find_element_by_xpath("/html/body/div/center[3]/a/button")
element.click()
terms = browser1.find_element_by_xpath("//*[@id='name']/form/input[4]")
terms.click()
book=browser1.find_element_by_xpath("//*[@id='name']/form/input[5]")
book.click()
name=browser1.find_element_by_xpath("//*[@id='firstname']")
name.send_keys('Venkat Naidu')
mobile=browser1.find_element_by_xpath("//*[@id='name']/form/input[5]")
mobile.send_keys('8790121620')
Age=browser1.find_element_by_xpath("//*[@id='name']/form/input[6]")
Age.send_keys('75')
gender=browser1.find_element_by_xpath("//*[@id='name']/form/h5[4]/input[2]")
gender.click()
我得到的错误是:当我 运行 cronjob
时没有名为 selenium 的模块
我遇到过和你一样的情况,面临着在 crontab 上转换 selenium GUI 脚本和从 Jupyter Notebook 到终端找到正确解释器的双重挑战。请在下面找到我的步骤。
从 Jupyter 下载 .py 文件(正如您已经完成的那样)
我通过 Anaconda 下载了 Jupyter,所以每当我安装 Python 模块时,它都不会安装到默认 /usr/bin/python3
,它会转到不同的可执行文件。在 Jupyter Notebook 中,运行 以下命令:
import sys
sys.executable()
我的输出是这样的:/Users/myusername/anaconda3/bin/python3.7
这是您需要用来代替 /usr/bin/python3
的输出
- 使用 crontab 脚本,您将需要使其无头。幸运的是 Chrome 这非常容易。请在脚本开头插入代码。
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
browser1=webdriver.Chrome('/Users/hiteshnettam/Downloads/chromedriver', options=chrome_options)
你已经完成一半了,你的脚本是无头的,但对于 crontab 来说还不够好。要让系统知道您确实不需要用于 运行 脚本的 GUI,您需要修改 crontab 脚本中的一个变量:DISPLAY=:0
。这不在您的 Python 脚本中,而是要放入您的 crontab 脚本中。我会在最后演示。 None 这实际上会影响功能,程序将 运行 完全相同。这样做的优点是您不必登录脚本即可 运行.
现在我们可以把所有的信息放在一起了。请注意我如何不 cd
进入目录,而是通过绝对文件路径引用文件,这更清晰,是首选方法。
您的 crontab 应如下所示,但请将 sys.executable
替换为您自己的输出。
*/3 * * * * DISPLAY=:0 /Users/myusername/anaconda3/bin/python3.7 /Users/hiteshnettam/Downloads/selenium_test.py
我一直在努力解决这个问题,但直到现在找不到任何帮助, 我正在尝试使用 crontab 运行 一个包含 selenium chrome 驱动程序的 python 脚本, 但我收到错误消息,没有名为 selenium 的模块。 虽然在笔记本里我已经下载了.py扩展文件并写了玉米作业:
crontab 中使用的命令:
CHROMEDRIVER_PATH='/Users/hiteshnettam/Downloads/chromedriver'
*/3 * * * * cd /Users/hiteshnettam/Downloads && /usr/bin/python selenium_test.py
下面写的是crontab运行上的脚本
import selenium
from selenium import webdriver
from selenium.webdriver import ActionChains
import datetime
browser1=webdriver.Chrome('/Users/hiteshnettam/Downloads/chromedriver')
browser1.get("http://www.madhavihospital.com")
element=browser1.find_element_by_xpath("/html/body/div/center[3]/a/button")
element.click()
terms = browser1.find_element_by_xpath("//*[@id='name']/form/input[4]")
terms.click()
book=browser1.find_element_by_xpath("//*[@id='name']/form/input[5]")
book.click()
name=browser1.find_element_by_xpath("//*[@id='firstname']")
name.send_keys('Venkat Naidu')
mobile=browser1.find_element_by_xpath("//*[@id='name']/form/input[5]")
mobile.send_keys('8790121620')
Age=browser1.find_element_by_xpath("//*[@id='name']/form/input[6]")
Age.send_keys('75')
gender=browser1.find_element_by_xpath("//*[@id='name']/form/h5[4]/input[2]")
gender.click()
我得到的错误是:当我 运行 cronjob
时没有名为 selenium 的模块我遇到过和你一样的情况,面临着在 crontab 上转换 selenium GUI 脚本和从 Jupyter Notebook 到终端找到正确解释器的双重挑战。请在下面找到我的步骤。
从 Jupyter 下载 .py 文件(正如您已经完成的那样)
我通过 Anaconda 下载了 Jupyter,所以每当我安装 Python 模块时,它都不会安装到默认
/usr/bin/python3
,它会转到不同的可执行文件。在 Jupyter Notebook 中,运行 以下命令:
import sys
sys.executable()
我的输出是这样的:/Users/myusername/anaconda3/bin/python3.7
这是您需要用来代替 /usr/bin/python3
- 使用 crontab 脚本,您将需要使其无头。幸运的是 Chrome 这非常容易。请在脚本开头插入代码。
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
browser1=webdriver.Chrome('/Users/hiteshnettam/Downloads/chromedriver', options=chrome_options)
你已经完成一半了,你的脚本是无头的,但对于 crontab 来说还不够好。要让系统知道您确实不需要用于 运行 脚本的 GUI,您需要修改 crontab 脚本中的一个变量:
DISPLAY=:0
。这不在您的 Python 脚本中,而是要放入您的 crontab 脚本中。我会在最后演示。 None 这实际上会影响功能,程序将 运行 完全相同。这样做的优点是您不必登录脚本即可 运行.现在我们可以把所有的信息放在一起了。请注意我如何不
cd
进入目录,而是通过绝对文件路径引用文件,这更清晰,是首选方法。
您的 crontab 应如下所示,但请将 sys.executable
替换为您自己的输出。
*/3 * * * * DISPLAY=:0 /Users/myusername/anaconda3/bin/python3.7 /Users/hiteshnettam/Downloads/selenium_test.py