본문 바로가기

파이썬

파이썬 Selenium을 이용해서 파일 업로드하기 Selenium을 이용하면 웹브라우저로 수행하는 여러 가지 작업을 자동화할 수 있습니다. 클릭, 검색, 로그인, 파일 업로드 등등의 처리를 모두 다룰 수 있습니다. 이번 포스팅에서는 파이썬의 셀레니움 라이브러리를 이용해서 파일을 업로드하는 방법을 알아보겠습니다. 예제로 파일을 업로드 해볼 사이트는 무료 이미지 변환 사이트입니다. 로그인이 필요 없습니다. https://convertio.co/kr/image-converter/ 파일을 업로드하는 방법은 파일 입력란에 send_keys 메서드를 사용해서 업로드할 파일의 경로를 입력하면 됩니다. 말이 좀 복잡하니 코드로 살펴보겠습니다. 파일 선택을 가능하게 하는 input 태그 요소는 저장 장치에서 파일 선택할 수 있습니다. 속성(attribute)의 값에 따.. 더보기
파이썬 웹크롤링 iframe 페이지 Selenium으로 처리하는 방법 파이썬에서 Selenium을 이용해서 웹크롤링을 한다면 대개 다음과 같은 코드를 씁니다. # 라이브러리 불러오기 from selenium import webdriver from selenium.webdriver.common.keys import Keys from bs4 import BeautifulSoup # 특정 웹페이지에 접근하기 driver = webdriver.Chrome() driver.get("웹페이지 주소") driver.implicitly_wait(10) # HTML 코드 가져오기 r = driver.page_source # 파싱 soup = BeautifulSoup(r, "html.parser") # 이후 데이터 수집 작업 대부분의 웹페이지는 이것으로 충분합니다. 하지만 만약 지금 내가 .. 더보기
파이썬 람다(lambda) 함수 파이썬으로 코딩을 하다 보면 종종 람다 함수를 사용할 때가 더 편한 경우가 있습니다. 여러 줄의 함수로 작성해야 할 것을 단 한 줄의 함수로 정리할 수 있기 때문입니다. 하지만 람다 함수를 처음 보면 뭔가 이상하게 생겼다는 생각도 들고 낯선 느낌이 듭니다. 사실 알고 보면 람다 함수는 그저 다른 종류의 함수입니다. 람다 함수를 사용할 때는 이렇게 써주면 됩니다. lambda 파라미터: 표현식 예를 들어 두 개의 숫자를 더한 뒤 그 값을 반환하는 다음과 같은 함수가 있습니다. def sum(x, y): return x + y print(sum(4,5)) # 9 위의 함수를 람다 함수를 이용해서 표현하면 아래와 같습니다. print((lambda x, y: x + y)(4,5)) # 9 또는 람다 함수를 변.. 더보기
pyinstaller 튜토리얼 소개: py 파일을 exe 파일로 변환하기 pyinstaller 사용이 처음이라 상당히 애를 먹었습니다. 세 가지 어려움이 있었는데요. 1) 특정 파일을 binary형태로 exe 파일에 포함시키는 것 2) RuntimeError: maximum recursion depth exceeded while calling a Python object 처리 3) 완성된 exe 파일의 속도 문제(너무 느림) 3번은 아직 해결 중이지만 위의 1, 2번은 해결했습니다. 해결에 도움이 된 참고 자료를 공유합니다. --add-binary "파일" 유튜브 영상과 stackoverflow에서 방법을 찾을 수 있었습니다. --add-binary에 대한 상세 내용은 링크를 참고해주세요. pyinstaller -w -F --add-binary "C:\파일명.exe;." 파일.. 더보기
[파이썬 tkinter] Label 위젯 사용하기 파이썬 tkinter에는 사용자와 프로그램이 상호 작용할 수 있도록 위젯을 제공합니다. 대표적인 위젯으로는 Label, Text, Button이 있습니다. 이번 포스팅에는 Label 위젯을 사용하는 방법에 대해서 소개하겠습니다. 다음과 같은 코드를 기본 템플릿으로 사용하겠습니다. 가로 600, 세로 600의 창을 만들었습니다. 위젯은 ttk로부터 가져오겠습니다. import tkinter as tk from tkinter import ttk root = tk.Tk() root.geometry("600x400") root.title("Hello, tkinter!") # 위젯 코드 추가 # root.mainloop() Label 위젯 추가하기 라벨 위젯은 화면에 텍스트 및 이미지를 표시하는 역할을 합니다. .. 더보기
파이썬 in 키워드: 값의 존재 여부 검사, 순서 반복 파이썬에서 in 키워드는 두 가지 목적으로 사용됩니다. 첫 번째는 특정 값이 시퀀스의 요소인지 아닌지를 판단하는 것입니다. 두 번째는 반복문에서 시퀀스의 요소를 반복하는 것입니다. 특정 값의 존재 여부 검사 in 키워드는 어떤 값이 리스트, 튜플, 세트의 요소인지 아닌지 여부를 판단하는 데 사용됩니다. 해당 값이 있으면 True를 없으면 False를 반환합니다. 예를 들어 다음과 같은 과일 이름으로 이루어진 리스트가 있을 때, 특정 과일 이름이 리스트에 들어있는지 판별할 수 있습니다. fruits = ['apple', 'grapes', 'banana', 'plum', 'mango'] print('plum' in fruits) # True print('pear' in fruits) # False 또한 앞서.. 더보기
파이썬 리스트 컴프리핸션(List Comprehension) 파이썬에는 리스트를 한 줄의 코드로 손쉽게 만들 수 있는 list comprehension이라는 문법이 있습니다. 기존의 반복 가능한 객체를 활용해서 새로운 리스트를 만들고 싶을 때 유용합니다. 예를 들어 range를 이용하여 1부터 10까지의 숫자가 담긴 리스트를 만들어 보겠습니다. ① for문을 사용하는 경우, ② 리스트 컴프리핸션을 사용하는 경우입니다. for문을 사용해서 리스트를 만들기 for문을 이용해 새로운 리스트를 만든다면 다음과 같은 과정이 필요합니다. - 빈 리스트를 생성한다. - iterable 한 객체의 요소를 반복한다. - 빈 리스트에 결과를 추가한다. numbers = [] for i in range(1,11): numbers.append(i) print(numbers) # [1,.. 더보기
파이썬 반복문 어디까지 진행되었는지 표시하기: tqdm 라이브러리 반복문을 돌리면 작업이 어디까지 진행된 건지, 되고는 있는 건지 궁금할 때가 많이 있습니다. 주피터 노트북 화면을 바라보며 반복문을 돌린 셀의 별표가 사라지길 계속 기다리기도 조금 답답합니다. 이럴 때 진행 상황을 확인하는 가장 쉬운 방법은 반복문 중간에 print 찍도록 코드를 작성하는 것입니다. 하지만 이 방법은 직관적으로 한눈에 진행 상황을 파악하기에는 무리가 있습니다. 파이썬에는 이럴 때 사용할 수 있는 tqdm 라이브러리가 있습니다. 이 라이브러리를 이용하면 진행 상황을 Progress Bar 형태로 한눈에 확인할 수 있습니다. tqdm 라이브러리 설치 Jupyter NoteBook을 열고 빈 셀에 다음의 설치 코드를 입력하고 실행시키면 됩니다. !pip install tqdm # 이미 설치가 .. 더보기