Flask 프로젝트 생성 플라스크 프로젝트는 하나의 웹 사이트라 생각하면 된다. 즉, 플라스크 프로젝트를 생성하면 웹 사이트를 한 개 생성하는 것과 같다. 그리고 플라스크 프로젝트 안에는 보통 한 개의 플라스크 애플리케이션이 존재한다 프로젝트 디렉토리 생성 플라스크 프로젝트는 여러 개가 될 수 있으므로 프로젝트를 모아둘 프로젝트 루트 디렉토리 생성을 해야한다 예제에서는 C:\projects 디렉토리를 프로젝트들의 루트 디렉토리로 정하고 진행한다 C:\> mkdir projects C:\> cd projects 루트 디렉토리에서 저번 포스팅에서 만든 가상 환경에 진입한다 C:\projects> C:\venvs\myproject\Scripts\activate 플라스크 프로젝트를 담을 myproject 디렉토..
Flask란? Flask란 마이크로 웹 프레임워크 플라스크는 파이썬으로 작성된 마이크로 웹 프레임워크이다 프레임워크를 간결하게 유지하고 확장할 수 있도록 만들어져있다 아래의 코드만으로 동작할 수 있을만큼 간결하다 from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello world!" if __name__ == "__main__": app.run(debug=True, port=5000) 이 코드만으로 locallhost:5000/에서 'Hello world!'를 출력할 수 있다고 한다 플라스크에는 폼, 데이터베이스를 처리하는 기능이 없다. 장고는 프레임워크 자체에 폼과 데이터베이스를 처리하는 기능이 포함되..
로그파일이란 온라인 시스템에서 컴퓨터의 모든 실행 내역을 수집하여 기록하는 파일. 장애로부터 복구할 때 이 파일의 정보가 필요하다 프로그램 개발 시에는 동작 상태, 결과 또는 오류 발생시 내용들을 파일에 저장해야 할 경우가 생긴다. 로그가 없다면 프로그램이 동작했는데 정상적으로 동작을 했는지 알기 힘들기 때문이다 로그파일 생성할 때 고려해야할 점 1. 로그 형식 (일자, 시간, 메세지 등의 형식을 정의) 2. 파일 관리 (로그파일 개수, 몇 개의 파일로 관리할 것인지, 일자별로 관리할 것인지..? 로그 파일 보관 주기) 로그파일 생성 파이썬의 logging 모듈 로그를 파일에 출력할 때 사용하는 모듈. 로그는 파일뿐만 아니라 소켓, 이메일, 콘솔 등 다양한 방법으로 출력이 가능하다 로깅 레벨 DEBUG ..
pyautogui 는 마우스와 키보드를 제어하는 라이브러리인데 click(), press(), keyDown() 등의 함수가 실행이 안되는 에러가 발생했다 해결방법은 관리자 권한으로 코드를 실행하는 것이다 나의 경우, 윈도우 환경, pycharm IDE로 코드를 돌리고 있었기 때문에 우클릭 > 관리자 권한으로 실행 이 방법으로 해결할 수 있었다
XPath나 ID값이 맞는데 selenium이 찾지 못하는 경우는 해당 html 태그가 iframe에 속해있는지를 확인해 주어야 한다. 찾으려는 태그가 iframe 안에 속해있었기 때문에 해당 에러를 발생했다. 해결 방법 driver.switch_to.frame(driver.find_element(By.ID, '~~frame')) 추가로, 이후에 다른 태그를 찾을 때 해당 태그가 다른 iframe에 속해있는지 확인해주고 해당 iframe이 아닌 다른 iframe으로 소속되어 있을 때는 아래의 코드로 초기화를 해준 다음 다음 태그를 찾으면 된다. driver.switch_to.default_content()
쿠키 저장 driver.add_cookie({"name": "", "value": ""}) 이렇게 저장하면 path는 / 로 설정되고 만료 기한은 프로그램이 실행되는 동안이다. path, expires등 따로 설정이 필요한 경우 (아직 테스트는 안 해보았지만, 일단 될 수 있으면 selenium에서 제공하는 쿠키 저장방식을 사용하려고 한다.) driver.execute_script("document.~~~")
selenium으로 dropdown 선택하기를 하는 중에 에러가 발생했다 no such element:Unable to locate element 아이디를 이용해 찾았는데 코드에는 문제가 없다고 생각했는데 에러가 나서 찾아보니 select_element = driver.find_element(By.ID, 'selkindcls') select_object = Select(select_element) select_object.select_by_value('토지') 태그 안에 있을 때는 자체 DOM을 사용하기 때문에 찾지 못한다는 것을 알게 되었다 해결방법은 switch_to.frame()을 이용하는 것이다 driver.switch_to.frame(driver.find_element(By.ID, 'iframe..
크롬 드라이브를 실행할 때 executable_path를 이용해서 열었더니 다음과 같은 에러가 발생했다. 해결방법은 다음과 같다. 1. webdriver-manager를 설치 pip install webdriver-manager 2. ChromeDriverManager를 이용하여 해당 Chrome버전에 맞는 chromedriver를 이용할 수 있게 한다 from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager def init_chrome_driver(): chrome_options = webdriver.Chro..