본문 바로가기

파이썬

파이썬 반복문(for)으로 딕셔너리(dict) 요소를 다루기 for 반복문과 딕셔너리(dict)를 사용해서 딕셔너리 안에 모든 요소를 다루는 방법을 알아보겠습니다. 다음과 같은 딕셔너리를 예제로 다루겠습니다. 다우존스 지수에 포함되는 30개 기업의 종목코드와 기업명이 key와 value로 짝지어져 있습니다. ticker = {'JNJ': 'Johnson & Johnson', 'MCD': "McDonald's Corporation", 'PFE': 'Pfizer Inc.', 'PG': 'The Procter & Gamble Company', 'HD': 'The Home Depot, Inc.', 'MSFT': 'Microsoft Corporation', 'NKE': 'NIKE, Inc.', 'VZ': 'Verizon Communications Inc.', 'BA': '.. 더보기
파이썬 Selenium 새로고침하는 방법 작업을 하다 보면 페이지 새로고침을 해야 할 때가 있습니다. 파이썬 Selenium에서 새로고침을 하는 세 가지 방법을 알아보겠습니다. refresh 메서드 메서드의 이름 그대로 새로고침을 실행합니다. 제일 간단한 방법입니다. driver.refresh() get 메서드 get 메서드에 현재 페이지 주소를 인자로 넣어주는 방법으로 새로고침을 할 수 있습니다. driver.get(driver.current_url) excute_script 메서드 해당 메서드를 사용하면 자바스크립트(JavaScript) 코드를 실행시킬 수 있습니다. 인자로 자바스크립트 코드를 전달합니다. 자바스크립트에는 주소와 관련된 location이라는 객체가 있습니다. 이 객체의 메서드를 사용하면 새로고침을 할 수 있습니다. drive.. 더보기
딕셔너리로 이루어진 리스트를 딕셔너리 안에 값을 기준으로 정렬하는 방법 자료를 수집하다 보면 딕셔너리(dictionary)로 구성된 리스트(list)를 작성하게 되는 경우가 많이 있습니다. 예를 들면 아래와 같은 형태입니다. 여러 방면으로 사용하기 편한 형태라고 생각합니다. [{'title': 'CLI for ordering Dominos pizza', 'upvote': 265}, {'title': '100+ LeetCode solutions in Go', 'upvote': 189}, {'title': 'Database basics: writing a SQL database from scratch in Go', 'upvote': 240}, {'title': 'Generics in Go - How They Work and How to Play With Them', 'upvot.. 더보기
파이썬 크롤링 BeautifulSoup select, select_one 태그 속성 100% 활용하기 BeatutifulSoup을 이용할 때 CSS 선택자를 이용하면 원하는 태그를 손쉽게 찾을 수 있습니다. ID와 CLASS 값이 있는 경우라면 더 쉽습니다. 그런데 사실 태그의 속성에는 아이디와 클래스 이외에도 활용하면 더 도움이 되는 값들이 많이 있습니다. 찾고자 하는 태그의 속성 값을 조회하면 특정 요소를 집어내는 것이 더 명확할 테니까요. 이번 포스팅에서는 select, select_one 메서드에 태그 속성 값을 함께 넣어서 원하는 태그를 찾는 방법을 알아보겠습니다. 예시로 사용할 soup 객체를 만들겠습니다. from bs4 import BeautifulSoup html = """ """ soup = BeautifulSoup(html) 속성(attribute)의 값이 특정 값과 정확히 일치하는 .. 더보기
파이썬 Selenium 프록시(Proxy) 설정하기 이번 포스팅에서는 파이썬 셀레니움 웹 드라이버 HTTP Proxy를 설정하는 방법을 간단히 다루겠습니다. 어떤 제한 정책에 의해서 특정 웹 사이트에 바로 접근하지 못하는 경우가 있습니다. 이럴 때 우회해서 접근할 수 있는 대표적인 방법들이 몇 가지 있습니다. 그중 하나가 바로 프록시 서버를 통해서 요청하는 것입니다. 셀레니움 웹 드라이버를 이용하면 HTTP 프록시 설정을 할 수 있습니다. 이를 이용해보겠습니다. 프록시 설정 프록시로 HTTP 요청을 보내기 위해서는 다음과 같은 코드가 필요합니다. from selenium import webdriver PROXY = "IP:Port" webdriver.DesiredCapabilities.CHROME['proxy'] = { "httpProxy": PROXY,.. 더보기
파이썬 Selenium을 이용해서 특정 요소의 부모 요소 선택하기 파이썬 셀레니움을 이용해서 웹사이트를 제어하는 일을 생각해보면, 바로바로 내가 원하는 요소를 동작시켜서 일을 끝마치면 될 것 같습니다. 대개의 경우에는 이렇게 특정 요소를 바로 직접적으로 찾아들어가면 더 편하고 빠르게 작업을 할 수 있겠지만, 그렇지 못한 경우가 있습니다. 이럴 경우 내가 원하는 요소를 지정하기 위해서 그 요소의 더 위에서부터 타고 내려오던가, 아니면 밑에서부터 거꾸로 올라가는 방법을 생각해 볼 수 있습니다. 어떤 방법이 되었던 id나 class를 이용해서 명확하게 기준을 삼을 수 있는 부분이 있는 방법을 사용하면 되겠죠. 무슨 방법이든 결과만 똑같다면 방법 선택은 개인의 취향 차이라고 생각합니다. 위에서부터 선택해서 내려가는 방법이야 기본적으로 여러 가지 방법이 널리 알려져 있으니 이번.. 더보기
파이썬 pandas, openpyxl 대신 csv 라이브러리로 엑셀 파일 만들기 파이썬으로 무언가 작업을 하고 나면 많은 경우 그 결과물을 다른 사람에게 엑셀의 형태로 제공해주곤 합니다. 이때 사용할 수 있는 여러 가지 라이브러리가 있습니다. 가장 쉽다고 생각되는 방법은 pandas dataframe의 to_excel 메서드를 사용하는 것입니다. 그다음으로 고려할만한 방법이 openpyxl과 csv 라이브러리를 사용하는 것입니다. 이번 포스팅에서는 csv 라이브러리를 이용해서 엑셀에서 열 수 있는 csv 파일을 만드는 방법을 알아보겠습니다. csv 라이브러리는 pandas, openpyxl과는 다르게 별도의 설치가 필요하지 않다는 장점이 있습니다. 또한 pandas에 비하면 그 용량이 매우 적습니다. 이는 tkinter 등을 사용해서 엑셀 파일로 결과물을 제공하는 gui 프로그램을 .. 더보기
파이썬 코드 흐름을 제어하는 pass, continue, break 조건문이나 반복문을 돌리다 보면 중간에 코드 흐름을 제어해야 할 필요가 있습니다. 예를 들어 특정 조건을 만족하면 코드 실행을 건너뛴다던가, 중단한다거나 등의 동작이 필요한 경우입니다. 이번 포스팅에서는 종종 헷갈리는 세 가지 흐름 제어문을 알아보겠습니다. 구분 설명 pass 아무것도 하지 않고 다음 코드를 실행 continue 다음 순서의 반복문(loop)을 실행 break 반복문(loop) 실행을 중단 예제 코드를 통해 각각을 알아보겠습니다. 다음과 같인 생긴 코드에 각각의 흐름 제어문을 넣어보겠습니다. 구구단 1단에서 3단까지를 만들었습니다. for i in range(1,4): for j in range(1,4): print(f"{i} x {j} = ", i * j) """ 1 x 1 = 1 1 .. 더보기