본문 바로가기

파이썬

파이썬 크롤링: BeautifulSoup에서 CSS selector를 사용하는 방법 파이썬에는 BeautifulSoup이라는 HTML 문서 분석 라이브러리가 있습니다. 이를 이용하면 HTML 문서에서 손쉽게 내가 원하는 정보를 추출할 수 있습니다. 오늘은 BeautifulSoup이 제공하는 여러 가지 유용한 기능 중, CSS 선택자를 매개변수로 받는 select() 메서드에 대해서 알아보겠습니다. 실습 페이지는 영문 위키피디아의 베네딕트 컴버배치 페이지를 사용하겠습니다. 페이지 불러오기 실습에 필요한 HTML 문서와 soup 객체를 준비합니다. # 라이브러리를 불러옵니다. import requests from bs4 import BeautifulSoup # 페이지를 받아와 soup 객체로 만듭니다. url = "https://en.wikipedia.org/wiki/Benedict_Cum.. 더보기
파이썬 리스트 중복 제거, 유일한 값 찾기 파이썬 리스트에 중복된 값을 제거하고 싶다면 어떻게 해야 하는지 알아보겠습니다. 크게 두 가지 방법이 있습니다. 1) 집합(set) 자료형을 이용한다. 2) for문을 이용해 리스트 요소를 순회하며 중복 여부를 체크한다. 샘플 데이터 다음과 같은 샘플 데이터가 있습니다. A가 2번, B가 2번, D가 2번으로 중복 값이 존재합니다. my_list = ['A', 'B', 'C', 'D', 'B', 'D', 'E'] 1. set을 이용해서 중복 제거하기 집합 자료형은 두 가지 큰 특징이 있습니다. 1) 중복을 허용하지 않는다. 2) 순서가 없다. 이 두 가지 특징 중 첫 번째 특징을 이용하면 손쉽게 리스트 요소의 중복을 제거할 수 있습니다. # 집합으로 변환 my_set = set(my_list) # 리스트.. 더보기
[파이썬] pandas 자료 구조: Series 기초 판다 스는 크게 두 가지 자료 구조로 이루어졌습니다. 첫 번째는 Series, 두 번째는 DataFrame 입니다. 오늘은 Series에 대해서 다루겠습니다. 판다스 불러오기 import pandas as pd Series 생성하기 s = pd.Series(data, index=index, name=name) 시리즈를 직관적으로 이해하는 가장 좋은 예시는 엑셀 시트의 열 하나를 떠올리는 겁니다. 엑셀과 달리 시리즈는 행의 이름(index)과 열의 이름(name)을 원하는 대로 입력할 수 있습니다. 별도로 입력하지 않는다면 index는 0부터 시작하는 정수 값이, name은 빈 값(None)이 입력됩니다. 또한 시리즈는 모든 데이터 유형(정수, 실수, 문자 등)을 담을 수 있습니다. 행 이름을 총칭하여 I.. 더보기
[파이썬] 웹 크롤링: 코드 10줄로 HTML을 Text로 변환하기 종종 웹 사이트에서 텍스트를 가져와야 할 때가 있습니다. 간단한 파이썬 코드를 이용해서 HTML 문서를 일반 텍스트로 가져오는 방법을 알아보겠습니다. import requests from bs4 import BeautifulSoup url = 'https://news.naver.com/main/read.nhn?mode=LSD&mid=shm&sid1=105&oid=001&aid=0011343153' html = requests.get(url) soup = BeautifulSoup(html.text) # find_all 함수에 매개변수로 리스트를 전달합니다. # 다음 코드는 HTML 문서의 모든 'script', 'style', 'header', 'footer', 'form' 태그를 반환합니다. script.. 더보기
[파이썬] pandas melt(), value_counts(): 역대 로또 당첨번호 빈도 세기 예제 로또 사는 친구를 보니 문득 두 가지 사소한 궁금증이 생겼습니다. 1) 역대 로또 당첨번호 중 가장 많이 나온 숫자는 뭘까 2) 당첨 번호 구간별 출현 비중은 어떨까 매번 추첨 행위가 독립 시행이기 때문에 서로 아무 상관 관계도 없는 건 알지만, 재미 삼아해 해 봤습니다. 역대 로또 당첨결과 데이터 수집하기 로또 사업자인 동행복권 사이트에 들어가 보니 엑셀 다운로드 기능을 제공하고 있습니다. 따로 제공 안 하면 이거 스크래핑을 900번 정도 해야 하나 싶었는데 다행입니다. 엑셀 데이터 살펴보기 깔끔한 테이블 형태의 데이터를 기대했지만 템플릿(서식) 형태의 파일입니다. 이렇게 생긴 데이터를 가지고도 당첨 번호를 셀 수는 있겠지만 노가다를 해야 할 것 같습니다. 노가다는 제 취향이 아니기 때문에 pandas.. 더보기
웹 페이지 텍스트 추출해서 단어 빈도수 세기 예제 웹 페이지에서 텍스트를 추출하고 단어별 빈도수를 세어보겠습니다. 불용어 등을 처리하지 않은 간단한 버전입니다. 1. 웹 페이지에서 텍스트 추출하기 - 이번 예제에서 사용할 텍스트는 이란의 미사일 발사에 대한 트럼프 대통령의 연설문입니다. import requests from bs4 import BeautifulSoup url = 'https://www.voanews.com/middle-east/voa-news-iran/full-text-trumps-speech-iran' html = requests.get(url) soup = BeautifulSoup(html.text) content = soup.select_one('.article__body p:nth-child(2)').get_text() print.. 더보기
파이썬을 이용해서 단어 빈도 세기: 이 글의 주요 내용은 무엇일까? 긴 문서를 읽다 보면 한 번씩 '아 귀찮다'라는 생각이 듭니다. 누가 와서 간단히 요점만 말해주면 좋을 것 같습니다. 글의 주요 내용을 어떻게 하면 간단히 알아챌 수 있을까요? 이렇게 생각해 볼 수 있을 것 같습니다. 글쓴이는 말하고자 하는 내용을 강조하기 위해 특정 단어들을 더 많이 사용했을 것이다. 이제 남은 일은 단어들이 언급된 빈도를 세어보는 일입니다. 하지만 단어 빈도를 세는 일은 사람이 하기에는 적합한 일이 아닙니다. 컴퓨터가 하기에 적합한 일이죠. 파이썬에게 문서 내의 각 단어의 빈도를 세어달라고 하겠습니다. 이번 글에서는 2020년 대통령 신년사로 빈도 분석을 해보았습니다. 한나눔 형태소 분석기로 명사만을 추출했습니다. 상위 단어를 보면 것(할 것, 될 것, 갈 것 등), 수(할 수, 갈 .. 더보기
[파이썬] 윈도우에 KoNLPy 설치하기: JDK 설치부터 실행까지 KoNLPy를 설치하고 사용하는 과정에서 겪은 에러 사항을 정리합니다. 문제의 발단은 공식문서를 읽어보지 않고 설치 및 실행한 것이었습니다. 당당히 실행을 시켰는데 아래와 같은 에러가 출력되었습니다. 공식문서를 살펴보면 아래와 같은 안내 문구가 쓰여있습니다. 안내 사항을 차례대로 따라가 보겠습니다. 1. JDK 설치 - 안내에서 알려주는 JDK 설치 링크를 따라갑니다. 본인의 OS에 맞게 파일을 다운로드하고 설치합니다. - 설치 경로가 이후 과정에서 필요하니까 기억해둡니다. 2. JAVA_HOME 설정 - [제어판 > 시스템 및 보안 > 시스템 > 고급 시스템 설정 > 환경 변수] 클릭 - 환경 변수 창에서 시스템 변수(S)의 [새로 만들기]를 선택 - 변수 이름과 변수 값을 입력 3. JPype1 설치.. 더보기