반응형
크롤링 해서 아침마다 자동으로 작업해두도록 뭘 짰는데, crontab으로 스케쥴 맞춰 두었는데 작동을 하지 않는다. 표 긁어서 엑셀로 자동으로 만들어 주고, 아침마다 그걸로 보고할 수 있는 업무 자동화 프로그램이었다. 코드 짜는 게 귀찮아서 그렇지 한 번 만들어 두면 매일 아침마다 스크랩 안 해도 되서 편하다.
chromedriver 경로와 디스플레이, crontab 간에 문제가 있는 것 같다.
File "/home/user1/anaconda3/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally.
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
/home/yscho/Working/intranet-login/intranet_login.py:28: DeprecationWarning: use options instead of chrome_options
driver = webdriver.Chrome(executable_path=chromedriver, chrome_options=chrome_options
경로 문제인가? 크롬 드라이버를 하단으로 파일 복사를 해주고,
# terminal
cp chromedriver /usr/bin/chromedriver
크론탭에 들어가서 (crontab -e)
# crontab -e
DISPLAY=:0
이 코드를 추가해주었다.
그다음에 다시 빠져나오고,
홈 창에서 다음과 같이 명령어를 하나씩 치면서 크론탬에 경로를 복사해주었다
# terminal
echo PATH=$PATH > tmp.cron
echo >> tmp.cron
crontab -l >> tmp.cron
crontab tmp.cron
저렇게 명령어를 치면 크론탭에 들어가면 자동으로 PATH가 복사되어 맨 상단에 있는 걸 볼 수 있다.
#crontab -e 내용
# CRONTAB 과 chromedrive PATH 문제 있음 아래 줄 추가함
PATH=/home/user1/anaconda3/bin:/home/user1/anaconda3/condabin:/sbin:/bin:/usr/bin:/usr/local/bin:/snap/bin:/usr/local/java/jdk1.7.0_80/bin:/usr/local/java/jdk1.7.0_80/bin:/usr/local/java/jdk1.7.0_80/bin:/usr/local/java/jdk1.7.0_80/bin
# 추가함
DISPLAY=:0
# m h dom mon dow command
06 16 * * * /home/user1/anaconda3/bin/python3 /home/user1/Working/intranet-login/intranet_login.py >> /home/user1/Working/intranet-login/intranet_login.log 2>&1
그 다음 원래 크롤링 파이썬 코드에서
chromedriver = '/usr/bin/chromedriver'
os.environ["webdriver.chrome.driver"]=chromedriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(executable_path=chromedriver, chrome_options=chrome_options)
이렇게 추가했다.
돌리면서 log파일을 확인하니
#
/home/user1/Working/intranet-login/intranet_login.py:28: DeprecationWarning: use options instead of chrome_options
driver = webdriver.Chrome(executable_path=chromedriver, chrome_options=chrome_options)
deprecationWarning만 나오고 코드는 다 돌아간다.
그런데 암만 봐도 만들어져야 할 엑셀 파일이 보이지 않았다🥲
다시 코드를 수정해서, (DISPLAY:=0은 주석처리 했다.)
저장되는 형태를 텍스트 파일이나 csv 처럼 콤마로 구분해서 만들도록 했는데, 그건 되는 것 같았다.
일단 여기까지 기록 끝!
반응형
'linux' 카테고리의 다른 글
ubuntu) chrome을 업데이트 할 수 없음 - firefox (0) | 2023.08.29 |
---|---|
server 날짜, 시간대 서울 기준 변경 UTC -> KST (0) | 2023.04.25 |
PATH 환경 변수에 넣지 않아 명령을 찾을 수 없습니다 (0) | 2023.02.19 |
ubuntu22.04 클림쉘 모드. 노트북 닫아도 외장모니터 화면 (0) | 2023.01.16 |
ubuntu22.04 크롬 설치 terminal - 23.01 (0) | 2023.01.16 |