2015/07/30

python 3를 이용해서 다음 사전에서 단어 찾아오기

 bash공부를 하는데, bash 매뉴얼이 번역된 게 없더군요. 그래서 공부도 할 겸 번역을 하려고 하는데, 모르는 단어가 너무 많아서 다음 사전의 신세를 지려고 했는데, 매번 웹페이지로 들어가서 텍스트 박스에 단어 넣고 검색하는 게 귀찮더군요. 그래서 python 3로 다음 사전에서 찾고자 하는 단어를 찾는 스크립트를 만들어봤습니다.

 우선, urllib3와 BeautifulSoup, sys, re 가 설치되어 있어야겠습니다.

------ code  시작 ------
#!/usr/bin/python3
import urllib3
import bs4
import sys
import re

# 알고자 하는 단어를 입력받습니다.
word = input('단어를 입력하세요: ')

# http 입력을 받기 위한 url 문자열을 만듭니다.
url = 'http://dic.daum.net/search.do?q=' + word

# urllib3를 이용해서 자료를 받습니다.
http = urllib3.PoolManager()
r = http.request( 'GET', url )

# urllib3에서 자료를 제대로 받아온 것을 확인합니다.
# 제대로 읽어오지 못했으면 스크립트를 종료합니다.
if r.status != 200:
    print( '자료를 읽어오지 못했습니다.' )
    print( 'urllib3 에러코드:', r.status )
    sys.exit( r.status )

# 읽어온 자료를 BeautifulSoup을 이용해 파싱해줍니다.
daumDic = bs4.BeautifulSoup( r.data )

# 읽어온 자료 중에서 단어들만 추출해냅니다.
# 우선 태크 중에서 필요한 부분만을 추출해냅니다.
korWords = daumDic.findAll('div', attrs={'class':'txt_means_KUEK'} )

# 태크들을 각각 지워야 할 필요가 생겼습니다.
# 파싱을 하니 원하는 모습으로 깔끔하게 되질 않더군요.
# 각 라인을 읽다가 '<'가 시작되면 단어를 읽지 않고, '>'가 나오면 글자를 저장해서 출력하는
# 방식으로 해보겠습니다.
for line in korWords:
    # 빈칸들을 없애주고
    line = str(line).replace( ' ', '' )
    # 저장할 장소를 마련해둡니다.
    word = ''
    # flag는 저장해도 좋을 지를 알려주는 역할을 합니다.
    flag = True

    # 한 글자씩 찾아나갑니다.
    for cha in line:
        # 태그가 시작하면 flag를 False로 만들어 저장하지 않습니다.
        if cha == '<':
            flag = False
        # 태그가 끝나면 flag를 True로 만들어 저장합니다.
        if cha == '>':
            flag = True
        if flag:
            word += str(cha)

    # 이하는 결과물을 보기 좋게 정리해주는 역할을 합니다.
    # 좀 너저분하네요.

    resultWord = ''

    # 위의 상태로 저장하게 되면 >부터 저장하기 때문에 >가 남게 됩니다.
    # 보기 흉하니 전부 빈칸으로 만듭니다.
    word = word.replace( '>', ' ')

    # 그럼 빈칸이 2개 이상 생기는 경우도 생깁니다.
    # 보기 흉하니 빈칸을 기준으로 쪼개서, 빈칸을 1개로만 해줍니다.
    for w in word.split():
        resultWord += w + ' '

    # 결과물을 출력합니다.
    print( resultWord )
--------- code 끝 ------------

 좀 보기 흉해도 조금 편해질 것 같네요. 정규표현식 ( regular expression )을 잘 사용하면 괜찮을 것 같은데, 쉽지않네요.

 그래도 참고로만 할 꺼니까 괜찮을 것 같네요.

혹시 bash매뉴얼번역에관심있으신분은

https://github.com/ptjoker95/bash_document_translate_Korean

를 참고해주세요.

댓글 없음: