본문 바로가기

분류 전체보기

파이썬 리스트(list) 안에 문자 대문자, 소문자로 바꾸기 문자열로 이루어진 리스트 안에 문자를 모두 대문자, 소문자 또는 첫 글자만 대문자로 바꾸고 싶다면, 반복문과 문자열 함수를 함께 이용하면 손쉽게 처리할 수 있습니다. 알아야 하는 문자열 함수는 세 가지 정도입니다. upper() upper 함수는 소문자를 대문자로 바꾸어 줍니다. 이미 대문자라면 원래 문자열을 반환합니다. text = "python is easy" print(text.upper()) # PYTHON IS EASY lower() lower 함수는 대문자를 소문자로 바꾸어 줍니다. 이미 소문자라면 원래 문자열을 반환합니다. text = "PYTHON IS EASY" print(text.lower()) # python is easy capitalize() capitalize 함수는 문자열의 첫.. 더보기
비유와 그림으로 이해하는 프레임워크와 라이브러리의 차이 회사를 다니다 보면 비개발 직군도 라이브러리와 프레임워크라는 용어를 여기저기서 들을 수 있습니다. 그런 분들 또는 교양으로 둘의 차이를 알고 싶어 하는 분들을 대상으로 간단하게 비유와 그림으로 차이를 설명해보려 합니다. 예를 들어 우리가 아래 사진과 같은 카메라를 만든다고 생각해보겠습니다. 카메라 한 대는 다양한 구성 요소들로 이루어져 있습니다. 광학 필터, 이미지 센서, 렌즈 등등 훨씬 더 많은 것들이 필요할 겁니다. 자 그럼 이제 어디서부터 시작해서 만들면 될까요? 렌즈부터 가공해야 할까요? 그럴 필요가 없습니다. 이미 전문가들이 잘 만들어 놓은 프레임워크와 라이브러리를 이용하면 훨씬 더 빠르고 안정적으로 카메라를 만들 수 있으니까요. 프레임워크(Framework) 카메라 한 대를 만들기 위해서는 외.. 더보기
파이썬 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를 이용해서 명확하게 기준을 삼을 수 있는 부분이 있는 방법을 사용하면 되겠죠. 무슨 방법이든 결과만 똑같다면 방법 선택은 개인의 취향 차이라고 생각합니다. 위에서부터 선택해서 내려가는 방법이야 기본적으로 여러 가지 방법이 널리 알려져 있으니 이번.. 더보기
CSS 가상 클래스 셀렉터 :nth-child와 :nth-of-type의 차이점 종종 헷갈리는 CSS 가상 선택자 :nth-child와 :nth-of-type의 차이점에 대해서 알아보겠습니다. 예를 들어 다음과 같은 HTML 코드가 있습니다. Lorem ipsum dolor nth-child와 nth-of-type을 이용해서 ipsum라는 텍스트의 색상을 흰색, 배경을 노란색으로 변경해보겠습니다. :nth-child nth-child는 부모 요소의 n번째 자식 요소를 의미합니다. 이번 예제에서는 p:nth-child(2)라고 입력했으니 p 태그의 부모 요소를 기준으로 두 번째 자식 요소에 해당하는 ipsum를 지칭합니다. See the Pen nth-child by hogni-seoul (@hogni-seoul) on CodePen. :nth-of-type nth-of-type은 부.. 더보기