우선, 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
를 참고해주세요.
댓글 없음:
댓글 쓰기