정구리의 우주정복
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분쯤 걸린듯 ..
쨋든 오늘은 단어장 가져와서 엑셀에 넣어주는거까지 완성 !
반응형
'PYTHON > PROJECT' 카테고리의 다른 글
Python Project 01. 단어장 만들기 (6) - 제작완료 (소스코드 및 후기) (0) | 2020.04.06 |
---|---|
Python Project 01. 단어장 만들기 (5) 4일차 - 단어시험 , 페이지 구현 완료 (0) | 2020.04.06 |
Python Project 01. 단어장 만들기 (4) 3일차 - 단어 시험 만드는 중 , 페이지 구현 (0) | 2020.04.06 |
Python Project 01. 단어장 만들기 (3) 2일차 - 단어장 선택하기 , 엑셀에 저장된 것 리스트에 옮기기 , 리스트 끊어서 저장 (0) | 2020.04.05 |
Python Project 01. 단어장 만들기 (1) 구상(수정1차) (0) | 2020.04.03 |
Comments