【发布时间】:2021-05-12 09:18:27
【问题描述】:
这是一个python脚本。在 Python 3.8 中运行。浏览器 - Firefox 和 geckodriver(最新版本)
#!/usr/bin/python3
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary (#added later to solve)
if __name__ == '__main__': (#added later to solve error)
binary = FirefoxBinary('/usr/bin/firefox') (#added later to solve error)
z=''
with open('dailynews.txt','w+') as fileobj:
dailynews=['State Bank of India']
for z in dailynews:
wbpg='https://news.google.com/search?q=' + str(z) + ' when:1d'
driver=webdriver.Firefox() (#This was earlier and worked fine.)
driver=webdriver.Firefox(firefox_binary=binary,executable_path='/usr/bin/geckodriver')
(#added later to solve)
driver.get(wbpg)
articlelist=WebDriverWait(driver,20).until(EC.presence_of_all_elements_located
((By.XPATH,"//*@class='DY5T1d RZIKme']")))
articlelist=driver.find_elements_by_xpath("//*[@class='DY5T1d RZIKme']")
for i in articlelist:
print(i.text,file=fileobj) #,file=fileobj >> to write to a file
driver.quit()
'''
此脚本在 python ide (eclipse>PyDev) 中运行良好,并且在终端中运行良好。 但是,我在 crontab 中安排了相同的计划(使用 crontab -e)。
* * * * * /usr/bin/python3 /Documents/morning_newspaper.py >> ~/Documents/cron.log 2>&1)
作业正在运行,但出现以下错误:
Traceback(最近一次调用最后一次):文件 “/home/leopard/Documents/morning_newspaper.py”,第 22 行,在 driver=webdriver.Firefox(firefox_binary=binary,executable_path='/usr/bin/geckodriver') 文件 “/home/leopard/.local/lib/python3.8/site-packages/selenium/webdriver/firefox webdriver.py",第 170 行,在 init RemoteWebDriver.init( 文件 "/home/leopard/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", 第 157 行,在 init self.start_session(capabilities, browser_profile) 文件 "/home/leopard/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", 第 252 行,在 start_session 响应中 = self.execute(Command.NEW_SESSION,参数)文件 "/home/leopard/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", 第 321 行,在执行 self.error_handler.check_response(response) 文件 “/home/leopard/.local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py”, 第 242 行,在 check_response raise exception_class(message, screen, 堆栈跟踪)selenium.common.exceptions.WebDriverException:消息: 进程意外关闭,状态为 1
这是作业中的系统日志 sn-p:
2 月 8 日 12:23:01 豹 CRON[7344]: (豹) CMD (/usr/bin/python3 /Documents/morning_newspaper.py >> ~/Documents/cron.log 2>&1) 2 月 8 日 12:23:01 leopard dbus-daemon [1552]: [会话 uid=1000 pid=1552] 通过 systemd 激活:service name='org.freedesktop.Tracker1' unit='tracker-store.service' 由 ':1.1' 请求(uid=1000 pid=1548 comm="/usr/libexec/tracker-miner-fs " label="unconfined") 2 月 8 日 12:23:01 leopard systemd[1540]: 启动 Tracker 元数据库 存储和查找管理器... 2 月 8 日 12:23:01 leopard dbus-daemon[1552]: [session uid=1000 pid=1552] 成功激活服务 'org.freedesktop.Tracker1' 2 月 8 日 12:23:01 leopard systemd [1540]: 启动 Tracker 元数据数据库存储和查找管理器。 2月8日 12:23:01 leopard dbus-daemon [1552]: [会话 uid=1000 pid=1552] 通过 systemd 激活:服务 name='org.freedesktop.Tracker1.Miner.Extract' unit='tracker-extract.service' 由 ':1.1' 请求(uid=1000 pid=1548 comm="/usr/libexec/tracker-miner-fs " label="unconfined") 2 月 8 日 12:23:01 leopard systemd[1540]: 启动 Tracker 元数据提取器... 2 月 8 日 12:23:01 leopard tracker-extract[7356]:将调度程序策略设置为 SCHED_IDLE Feb 8 12:23:01 leopard tracker-extract[7356]:设置 优先级为 8 月 19 日 12:23:01 leopard dbus-daemon [1552]: [session uid=1000 pid=1552] 成功激活服务 'org.freedesktop.Tracker1.Miner.Extract' 2 月 8 日 12:23:01 豹 systemd[1540]:已启动 Tracker 元数据提取器。 2月8日 12:23:12 leopard systemd [1540]:tracker-extract.service:成功。 2月8日 12:23:31 leopard tracker-store[7349]: OK Feb 8 12:23:31 leopard systemd[1540]: tracker-store.service: 成功。
最初,认为这将是由于驱动程序启动,因此添加了 Firefox 二进制文件和所有(来自 stackoverflow 上的帖子),但这不起作用。
感谢您提供预期的解决方案。 '''
【问题讨论】:
-
可能和cron使用的用户有关,试试headless mode
-
成功了。 :-) 非常感谢和荣誉 DeepSpace
-
很高兴听到,我会回答的
标签: python selenium selenium-webdriver firefox cron