我已經閱讀了大部分的python/cron在stackoverflow中,但卻無法讓我的腳本運行。我明白,我需要通過shell(使用的zsh & IPython的方式)來運行我的劇本,但我真的不知道該怎麼做:/在crontab中執行Python(selenium)腳本
我簡單的代碼:
在crontab-
*/1 * * * * ipython /home/usr/Data/progs/cron_test.py
我的Python腳本 -
import pickle
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.google.com')
t=driver.current_url
pickle.dump(t,open('noreal','wb'))
我嘗試過的一些事情已經但無濟於事:
#!python ../python etc
SHELL = /usr/bin/zsh
PATH =/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
很簡單,因爲我不知道是什麼問題,我想通過翻譯運行python腳本的東西,但我不知道我在做什麼真的:)
一個工作的解決方案將是巨大的,我真的很感謝解釋隨附任何解決方案,所以我可以理解爲什麼,怎麼樣,而不僅僅是像 '它的工作!謝謝!再見!」
感謝您的幫助!
更新 到目前爲止,我已經縮小的問題,現在蟒蛇運行具有以下設置:
*/3 * * * * /usr/local/bin/ipython /home/user/Data/progs/RF/cron_test.py
,我得到了一個回溯:
[1;31m---------------------------------------------------------------------------[0m
[1;31mWebDriverException[0m Traceback (most recent call last)
[1;32m/usr/local/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc[0m in [0;36mexecfile[1;34m(fname, *where)[0m
[0;32m 176[0m [1;32melse[0m[1;33m:[0m[1;33m[0m[0m
[0;32m 177[0m [0mfilename[0m [1;33m=[0m [0mfname[0m[1;33m[0m[0m
[1;32m--> 178[1;33m [0m__builtin__[0m[1;33m.[0m[0mexecfile[0m[1;33m([0m[0mfilename[0m[1;33m,[0m [1;33m*[0m[0mwhere[0m[1;33m)[0m[1;33m[0m[0m
[0m
[1;32m/home/user/Data/progs/FB/cron_test.py[0m in [0;36m<module>[1;34m()[0m
[0;32m 9[0m [1;33m[0m[0m
[0;32m 10[0m [1;33m[0m[0m
[1;32m---> 11[1;33m [0mdriver[0m [1;33m=[0m [0mwebdriver[0m[1;33m.[0m[0mFirefox[0m[1;33m([0m[1;33m)[0m[1;33m[0m[0m
[0m[0;32m 12[0m [0mdriver[0m[1;33m.[0m[0mget[0m[1;33m([0m[1;34m'http://www.google.com'[0m[1;33m)[0m[1;33m[0m[0m
[0;32m 13[0m [1;33m[0m[0m
[1;32m/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.pyc[0m in [0;36m__init__[1;34m(self, firefox_profile, firefox_binary, timeout, capabilities, proxy)[0m
[0;32m 58[0m RemoteWebDriver.__init__(self,
[0;32m 59[0m command_executor=ExtensionConnection("127.0.0.1", self.profile,
[1;32m---> 60[1;33m self.binary, timeout),
[0m[0;32m 61[0m desired_capabilities=capabilities)
[0;32m 62[0m [0mself[0m[1;33m.[0m[0m_is_remote[0m [1;33m=[0m [0mFalse[0m[1;33m[0m[0m
[1;32m/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.pyc[0m in [0;36m__init__[1;34m(self, host, firefox_profile, firefox_binary, timeout)[0m
[0;32m 45[0m [0mself[0m[1;33m.[0m[0mprofile[0m[1;33m.[0m[0madd_extension[0m[1;33m([0m[1;33m)[0m[1;33m[0m[0m
[0;32m 46[0m [1;33m[0m[0m
[1;32m---> 47[1;33m [0mself[0m[1;33m.[0m[0mbinary[0m[1;33m.[0m[0mlaunch_browser[0m[1;33m([0m[0mself[0m[1;33m.[0m[0mprofile[0m[1;33m)[0m[1;33m[0m[0m
[0m[0;32m 48[0m [0m_URL[0m [1;33m=[0m [1;34m"http://%s:%d/hub"[0m [1;33m%[0m [1;33m([0m[0mHOST[0m[1;33m,[0m [0mPORT[0m[1;33m)[0m[1;33m[0m[0m
[0;32m 49[0m RemoteConnection.__init__(
[1;32m/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.pyc[0m in [0;36mlaunch_browser[1;34m(self, profile)[0m
[0;32m 59[0m [1;33m[0m[0m
[0;32m 60[0m [0mself[0m[1;33m.[0m[0m_start_from_profile_path[0m[1;33m([0m[0mself[0m[1;33m.[0m[0mprofile[0m[1;33m.[0m[0mpath[0m[1;33m)[0m[1;33m[0m[0m
[1;32m---> 61[1;33m [0mself[0m[1;33m.[0m[0m_wait_until_connectable[0m[1;33m([0m[1;33m)[0m[1;33m[0m[0m
[0m[0;32m 62[0m [1;33m[0m[0m
[0;32m 63[0m [1;32mdef[0m [0mkill[0m[1;33m([0m[0mself[0m[1;33m)[0m[1;33m:[0m[1;33m[0m[0m
[1;32m/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.pyc[0m in [0;36m_wait_until_connectable[1;34m(self)[0m
[0;32m 98[0m raise WebDriverException("The browser appears to have exited "
[0;32m 99[0m [1;34m"before we could connect. The output was: %s"[0m [1;33m%[0m[1;33m[0m[0m
[1;32m--> 100[1;33m self._get_firefox_output())
[0m[0;32m 101[0m [1;32mif[0m [0mcount[0m [1;33m==[0m [1;36m30[0m[1;33m:[0m[1;33m[0m[0m
[0;32m 102[0m [0mself[0m[1;33m.[0m[0mkill[0m[1;33m([0m[1;33m)[0m[1;33m[0m[0m
[1;31mWebDriverException[0m: Message: 'The browser appears to have exited before we could connect. The output was: Error: no display specified\n'
'ipython'對這種*非交互使用的縮影有什麼好處? – tripleee
不,我想,這對於這個問題很重要嗎?我不介意使用普通的Python –
「你已經嘗試過的東西」的意義是什麼?它們中沒有一個在語法上是正確的。一個正確的shebang就像'#!/ usr/bin/env python'一樣,並且賦值不能包含任何空格。 – tripleee