정구리의 우주정복

Python Project 01. 단어장 만들기 (2) 1일차 - 네이버 단어장에서 단어 추출 , re 모듈 사용 (모든 공백문자 없애기), openpyxl을 이용해 엑셀에 저장 본문

PYTHON/PROJECT

Python Project 01. 단어장 만들기 (2) 1일차 - 네이버 단어장에서 단어 추출 , re 모듈 사용 (모든 공백문자 없애기), openpyxl을 이용해 엑셀에 저장

Jungry_ 2020. 4. 3. 22:44
반응형
# 단어장 불러와서 엑셀에 자동저장하기 
import ssl
import re
from urllib.request import urlopen
from bs4 import BeautifulSoup
from openpyxl import Workbook

context = ssl._create_unverified_context()

#단어 불러오기
url = 'https://learn.dict.naver.com/m/endic/wordbook/exam/10001/20001/words.nhn?filterType=0&orderType=2&pageNo='
page = 1

#openpyxl 부분
wb = Workbook()
ws1 = wb.active #활성 시트를 만들어준다
ws1.title='wordList'
n=1

 #re 부분
pattern = re.compile(r'\s+')


for i in range(2) :
    newUrl = url+str(page)

    html = urlopen(newUrl,context=context).read()
    soup=BeautifulSoup(html,'html.parser')
    wordClass=soup.find_all(class_='lst_li2')
    for i in wordClass : 
        word = i.select_one('.words').text #단어정보
        mean = i.select_one('.txt_ct2').text
        splitMean=(mean.split(','))[0]

        splitMean=re.sub(pattern,'',splitMean)
    
        wordList =[word,splitMean]
        for i in range(n,n+1): #1부터 2까지 (2개를 넣어줄거라서)
            ws1.cell(row=i,column=1).value=wordList[0] #앞에 단어를 넣어줌
            ws1.cell(row=i,column=2).value=wordList[1]
            n=n+1

    page = page+1
wb.save(filename='wordList.xlsx')

오늘은 네이버 단어장에서 자동으로 단어 , 뜻 을 불러와 리스트에 담아주는걸 만들었다 

그리고 엑셀에 넣어주려고 openpyxl 을 import 해줬다

 

단어 불러오는거는 금방 뚝딱 했는데 예상외로 뜻을 불러오는게 너무 어려웠음 ㅜㅜ 

뜻이 이렇게 완전 앞 뒤에 개행문자 엄청 많이 들어가서 이걸 다 없애는게 좀 힘들었음 

나는 re 모듈을 사용해줬다

 

import re
pattern = re.compile(r'\s+')
word = re.sub(pattern,'',word)

이런 방식을 써주면 모든 공백문자가 제거된다 

또 다른 방법으로는

word = ''.join(word.split())

이렇게 간단하게 써도

이렇게 된다 

근데 문장 중간의 띄어쓰기도 다 없어져버려서 조금 가독성이 떨어질 수도 있지만 저 앞뒤로 이상한거만 없애는 방법을 모르겠다 ..

아는 사람 있으면 도와주세여 ㅜㅜ

 

re 모듈은 나중에 좀 더 자세하게 알아봐야겠다

 

그리고 openpyxl 을 이용해서 저장한 리스트를 엑셀에 저장해 주었다 

이것도 나중에 좀 더 자세히 알아봐야지

 

일단 오늘은 openpyxl 을 이용해 파일에 리스트 저장하기 

##openpyxl 부분만 따로 가져온거다 !
from openpyxl import Workbook #write 를 해주기 위해 Workbook 을 import
wb = Workbook()


#데이터 시트 활성화
wb1 = wb.active

#시트의 이름 정하기
wb1.title = 'wordList'
#n을 이용해 for 문 돌릴때 range 를 정해줌
n=1

#cell 함수를 이용해 넣을 데이터의 행렬 위치를 지정해줍니다.
for i in range(n,n+1): #1부터 2까지 (2개를 넣어줄거라서)
            ws1.cell(row=i,column=1).value=wordList[0] #앞에 단어를 넣어줌
            #row : 세로줄 column : 가로줄
            ws1.cell(row=i,column=2).value=wordList[1] #두번째에 뜻 넣어줌
            n=n+1

#저장해주기 !
wb.save(filename='wordList.xlsx')

전체 소스 안에 openpyxl 부분만 가져온거다 

이렇게 하면 엑셀에 넣기 완료 !

여기선 range(2) 로 해줘서 작동이 얼마 안걸렸는데 최대길이인 69로 했더니 한 2분쯤 걸린듯 ..

 

쨋든 오늘은 단어장 가져와서 엑셀에 넣어주는거까지 완성 !

반응형
Comments