일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- pywinauto 윈도우제어
- 파이썬 가상환경 설치
- 날짜 정규식
- venv 설치
- 커머스API
- uipath 입문
- 파이썬 네이버 로그인
- UiPath
- 파이썬 가상환경 설치방법
- 네이버 로그인 하기
- pywinauto
- vscode venv 설치
- 네이버부동산크롤링
- selenium
- 왕초보 파이썬 실행
- 네이버매물크롤링
- 네이버 로그인 캡챠해결
- Python
- pycdc.exe
- 파이썬네이버부동산
- Uipath 설치방법
- pywinauto 윈도우
- Selenium 셀렉터잡기
- pycdas.exe
- 가상환경설치
- 파이썬 환경설정
- Uipath 기초
- 네이버커머스API
- 네이버 로그인 영수증 해결
- Element is not clickable at point
- Today
- Total
목록프로그래밍 (351)
콘솔워크
# 새 탭에서 URL로 이동 driver.get(product_url) time.sleep(1) wait = WebDriverWait(driver, 10) wait.until(EC.presence_of_element_located((By.XPATH, '//h2[contains(text(), "상품 설명")]'))) # 상품 설명 영역의 시작점 찾기 start_element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, "div.ProductExplanation..
=SUM(A2:INDIRECT(ADDRESS(ROW(), COLUMN() - 1)))ADDRESS 함수는 텍스트 형식의 셀 주소를 반환하므로, 이를 직접 SUM 함수에 사용할 수는 없습니다. 대신, INDIRECT 함수를 사용하여 ADDRESS가 반환한 텍스트 주소를 실제 셀 참조로 변환할 수 있습니다.다음 수식을 사용하여 현재 셀의 왼쪽에 있는 모든 셀의 합계를 계산할 수 있습니다:excel코드 복사=SUM(A2:INDIRECT(ADDRESS(ROW(), COLUMN() - 1)))이 수식의 동작 방식은 다음과 같습니다:ADDRESS(ROW(), COLUMN() - 1)는 현재 셀의 왼쪽 셀의 주소를 텍스트 형식으로 반환합니다.INDIRECT 함수는 이 텍스트 주소를 실제 셀 참조로 변환합니다.SUM ..
셀레니움 개발하다가 어느 순간부터 개발자도구에서 이것저것 테스트해봐야하는데복사 붙여넣기가 안되었다. 하나씩 타이핑 하다가 결국 하는 방법을 찾아냈다. 개발자도구에 allow pasting 이라는 명령어를 입력해주면 된다. 그 다음 부터는 잘됨.
import openpyxlfrom openpyxl.styles import PatternFillclass CompareExcel: def __init__(self, file_a, file_b, key_column, compare_columns): self.file_a = file_a self.file_b = file_b self.key_column = key_column self.compare_columns = compare_columns self.wb1 = None self.wb2 = None self.ws1 = None self.ws2 = None self.yellow_fill = ..
컴파일러 스크립트 예시 한글추가 [Languages] Name: "korean"; MessagesFile: "compiler:Languages\Korean.isl" Name: "english"; MessagesFile: "compiler:Default.isl" 한글추가경로 C:\Program Files (x86)\Inno Setup 6\Languages
def add_columns_if_missing(file_path, column_names): # 엑셀 파일 열기 workbook = openpyxl.load_workbook(file_path) sheet = workbook.active # 헤더로 사용될 첫 번째 행에서 모든 컬럼 이름 가져오기 headers = [cell.value for cell in sheet[1]] # 1행의 모든 셀 값을 리스트로 저장 # 현재 헤더에 몇 개의 컬럼이 있는지 확인 current_max_column = len(headers) print("current_max_column", current_max_column) # 주어진 컬럼 이름들 중 누락된 것이 있는지 확인하고 추가 for column_name in column..
import re def generate_fjgyno(address, admin_code, is_mountain=False): # 필지구분 (산인 경우 2, 일반인 경우 1) parcel_type = "2" if is_mountain else "1" # 정규식 패턴을 사용하여 본번과 부번 추출 pattern = r"(\d+)(?:-(\d+))?" # 숫자-숫자 패턴 (부번은 옵셔널) match = re.search(pattern, address) if match: bonbun = match.group(1).zfill(4) # 본번 (4자리로 패딩) bunbun = match.group(2).zfill(4) if match.group(2) else "0000" # 부번 (부번이 없는 경우 0000) els..
FastAPI로 간단한 API 서버를 만들었다. 그런데 요청이 올때마다 200 응답한번, 307응답 한번씩 두번 요청되었다. 원인은 엔드포인트에 있었다. 앤드포인트를 만들때 뒤에 항상 "/"를 붙여줬는데 이걸 빼주면 된다. 변경 전 변경 후 앤드포인트 제거 후에는 307 Redirect 에러가 더 이상 발생하지 않았다.
cmd가 아닌 powershell이라면 activate.bat이 아니라 activate.ps1를 실행해야 한다 근데 에러가 발생한다 \activate.ps1 : 이 시스템에서 스크립트를 실행할 수 없으므로 \venv\Scripts\activate.ps1 파일을 로드할 수 없습니다. Poweshell 관리자 모드로 실행 후, 아래 커맨드를 실행합니다. Set-ExecutionPolicy Unrestricted 아래 커맨드로 설정값을 확인해볼 수 있다 Get-ExecutionPolicy 다시 activate.ps1을 실행하면 venv 가 잘 실행됨을 확인할 수 있다
현재년도를 기준으로 과거 5년, 미래 5년에 대한 10개 콤보박스를 구현해보았다. self.year_select_combobox = QComboBox() current_year = datetime.now().year past_years = [str(current_year - i) for i in range(5, 0, -1)] future_years = [str(current_year + i) for i in range(1, 6)] year_list = past_years + [str(current_year)] + future_years self.year_select_combobox.addItems(year_list) self.year_select_combobox.setCurrentText(str(date..
xpath를 이용해서 검색 가능한 키워드중 "ancestor"를 활용하면 부모들을 대상으로 검색대상을 지정할 수 있다. remove_target = driver.find_element(By.XPATH, '//tr[./td[4]//span[text()="품절"]]//td[12]//i') target_tr = remove_target.find_element(By.XPATH, ".//ancestor::tr") target_order_code = target_tr.find_element(By.CSS_SELECTOR, "td:nth-child(1)").get_attribute( "textContent" ) 위의 코드는 remove_target의 부모들 중 가장 가까운 tr 태그를 찾는 함수이다.
최근 네이버 매물 수집 로직이 바뀌었습니다. 이에, 코드를 수정하였습니다. 새롭게 바뀐 로직이 반영된 프로그램 원하시면 여기서 확인 가능합니다. https://consolework.com/shop_view/?idx=15 N사 부동산 크롤링 N사 부동산 매물 수집 consolework.com 자세한 사항은 댓글 또는 카카오톡 1:1 링크로 문의 남겨주세요. https://open.kakao.com/o/sqAplEke
import pandas as pd execel = r"C:\excels\yuhan_retry.xlsx" df_for_upload = pd.read_excel(execel) df_for_upload = df_for_upload.fillna("") df_for_upload.loc[df_for_upload["A"] != "", "B"] = "" print(df_for_upload) df_for_upload.to_excel("test.xlsx") A 컬럼의 값이 존재하는 경우 B 컬럼의 데이터를 지우는 코드이다.
전체코드는 다음과같다. if 1 == 1: import sys import os sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__)))) import time from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from selenium.webdriver.chrome.options import Options import time from selenium.webdriver.chrome.options import Options from selenium import webdriver import os f..
//span[contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '옐로우')]
일단 기본적으로 pywinsparkle 라이브러리( https://pypi.org/project/pywinsparkle/)는 2023.10.06일 기준으로 오류가 발생한다. pip install pywinsparkle 위의 것으로 설치를 하면 설치가 안된다. pypi에 제대로 등록이 안되어있나보다. ERROR: Could not find a version that satisfies the requirement pywinsparkle (from versions: none) ERROR: No matching distribution found for pywinsparkle (venv) PS C:\consolework\resellmaster-agent> pip instal 위에는 무시하시고 아래 부터 따라하시면..
chromedriver_autoinstaller 가 더이상 동작하지 않는다. 그래서 새로운 라이브러리를 찾아보던중 발견하였다. pip install get_chrome_driver 위의 패키지를 설치하면 끝이다. import time from get_chrome_driver import GetChromeDriver from selenium import webdriver # Install the driver: # Downloads ChromeDriver for the installed Chrome version on the machine # Adds the downloaded ChromeDriver to path get_driver = GetChromeDriver() get_driver.install() ..
preceding-sibling 앞 following-sibling 뒤 을 사용하면 바로 옆에있는 태그에 접근할 수 있다. state_select = Select(driver.find_element(By.XPATH, '//th[text()="상세조건"]/following-sibling::td[1]//select')) driver.find_element(By.XPATH, '//th[text()="상세조건"]/following-sibling::td[1]//select') 바로 앞에 있는 것을 찾으려면 preceding-sibling 을 쓰면된다.
pip install pdfkit 해당 라이브러리를 windows 환경에서 사용하기 위해서는 사전에 wkhtmltopdf를 설치해야 합니다. https://wkhtmltopdf.org/downloads.html wkhtmltopdf All downloads are currently hosted via GitHub releases, so you can browse for a specific download or use the links below. Do not use wkhtmltopdf with any untrusted HTML – be sure to sanitize any user-supplied HTML/JS, otherwise it can lead to complete ta wkhtmltopdf.o..
[개요] pyinstaller는 python 코드를 배포하기 위해 실행파일 (exe)로 만들어주는 편리한 패키지이다. 패키지 다운로드 pip install pyinstaller 실행파일 생성 pyinstaller -n "파일이름" -w --onefile --clean "main.py" --icon "아이콘.ico" 패키지를 받은 후, 위 명령어를 입력하는 방식으로 자주 사용하고있다. --onefile 옵션을 추가하는 것으로 프로그램이 하나의 exe 파일에 정리되어서 배포에도 아주 편리하고, 사용자 입장에서도 좋다. 이렇게 생성한 exe 파일은 대부분의 환경에서 잘 작동하지만, 몇몇 PC에서 해당 파일을 Trojan 바이러스로 인식하여 Window Defender에서 자동으로 삭제하는 문제가 있다. 물론 ..
import logging # 로그 설정 my_log = logging my_log.basicConfig(filename="log_sample.log", level=logging.INFO) # 로그 생성 및 기록 my_log.debug('이 메시지는 디버그용 로그입니다.') my_log.info('정보성 로그 메시지입니다.') my_log.warning('경고 메시지입니다.') my_log.error('에러 메시지입니다.') my_log.critical('심각한 문제가 발생했습니다.') debug부터 차례대로 로그의 레벨 순서대로 작성하였고, 위와 같이 코드를 작성하면 로그 설정에서 입력한 logging.INFO 레벨 이상의 메시지가 기록되게 된다.
data_list = [ {"key1": "value1", "key2": "value2"}, {"key1": "value3", "key2": "value4"}, {"key1": "value5", "key2": "value6"} ] key1_list = [data["key1"] for data in data_list] print(key1_list) 리스트 컴프리헨션을 활용하면 간단하게 구현할 수 있습니다.
아래 방법을 알기 전에 내가 기존에 사용하던 방식 배열을 선언해준 후 각 값에 2를 곱해서 배열에 담기 때문에 코드가 많이 지저분하다. my_list = [1, 3, 5, 7, 9] squares = [] for x in my_list: squares.append(x * 2) print(squares) 위의 과정을 일부 생략하고 python문법으로 작성한 코드 my_list = [1, 3, 5, 7, 9] squares = [x * 2 for x in my_list] print(squares) 위의 방법을 selenium에서 다음과 같이 활용할 수 있다. # 기존의 코드 number_list = [] for number_link in number_link_list: number = number_link...
python에서의 decorator는 어떤 함수를 꾸며서 새로운 함수를 만들 때 사용할 수 있다. 아주 간단한 예시 def add_print_to(original): def wrapper(): print("함수 시작") original() print("함수 끝") return wrapper @add_print_to def print_hi(): print("안녕") print_hi() 각 함수를 작동시키기 전이나 후, 동일한 코드를 반복적으로 작성할 때, 데코레이터 함수를 사용하면 아주 유용하다. 객체지향 프로그래밍에서 이 데코레이터 함수는 아주 많이 사용된다.
문자열, 배열, 튜플, 딕셔너리에 사용할 수 있다. 1. 문자열(strings) ########### in ########### if 'p' in 'python': print(True) else: print(False) ------------------------- True ########### not in ########### if 'k' not in 'python': print(True) else: print(False) ------------------------- True 2. 리스트(list) ############## in ############## if 'a' in ['a','b','c']: print(True) else: print(False) -------------------------..
from collections import defaultdict data = [ {'claim_number': '22756365', 'order_number_list': '2102940323'}, {'claim_number': '22787274', 'order_number_list': '2133237895'}, {'claim_number': '22788336', 'order_number_list': '2134958649'}, {'claim_number': '22788336', 'order_number_list': '2134958648'}, {'claim_number': '22788336', 'order_number_list': '2134958647'}, {'claim_number': '22788336',..
from selenium import webdriver import time # WebDriver 인스턴스 생성 driver = webdriver.Chrome() # 탭 열기 driver.get("https://www.example.com") example_tab = driver.window_handles[0] time.sleep(1) driver.execute_script("window.open('https://www.google.com');") google_tab = driver.window_handles[1] time.sleep(1) driver.execute_script("window.open('https://www.yahoo.com');") yahoo_tab = driver.window_hand..
기억을 위해 간략하게 적는다. 준비물 1. pyinstaller로 빌드된 exe파일 여기서는 "app.exe"이라는 파일이라고 가정 2. pyinstxtractor 코드 설치 git clone https://github.com/extremecoders-re/pyinstxtractor.git 3. 코드 해체 python .\pyinstxtractor.py app.exe 4. app_extracted폴더내에 디컴파일 원하는 pyc 파일 찾기 ex) 저의경우 main.pyc였음. 5. uncompyle6로 디컴파일 시도 pyc 파일 to py파일로 변환 pip install uncompyle6 uncompyle6 main.pyc > main.py
from datetime import datetime, timedelta # 현재 날짜 now = datetime.now() # 30일 전 날짜 계산 delta = timedelta(days=30) previous_date = (now - delta).strftime("%Y%m%d") # 결과 출력 print(previous_date)