때는 노마드 코더 바닐라 JS로 크롬 앱 만들기 수업을 듣던 중...
구글의 Momentum 클론 코딩인데, 시계를 구현하는 것까지 다 듣고 그 이후 든 생각으로 인해 n시간을 머리를 쥐어뜯게 되었다.
nico 선생님이 명언들을 배열 안에 객체로 준비하신 걸 보고 아, 이거 명언을 드래그로 긁어와서 만들어도 되지만 파이썬 크롤링으로 텍스트를 가져와서 어떻게 할 수는 없을까?!라는 생각이 들었다.
왜 그랬을까... 한 10개 정도만 준비하면 된다고 하셨는데... 차라리 드래그해서 복사를 했다면 명언 삽입까지 강의 진도를 나갈 수 있었을 텐데... 자꾸만 생각대로 되지 않는 코드를 노려보며 그놈의 호승심으로 끝까지 부여잡았다.
Visual Studio Code 에서 파이썬 파일을 만드는 건 문제가 없었지만(확장 탭에서 Python 설치해야 함), bs4가 문제였다. 별짓을 다 해봤는데 그냥 에디터에서 터미널 켜놓고 pip install bs4 하니까 되더라.
from bs4 import BeautifulSoup
from urllib.request import urlopen
page = urlopen("https://ko.wikiquote.org/wiki/%ED%95%9C%EB%AC%B8_%EC%84%B1%EC%96%B4");
soup = BeautifulSoup( page, "html.parser");
proverbList = {"Hanja":[], "Hangul":[], "Meaning":[]}
proverbFirst = []
for proverb in soup.find_all('td'):
# remove last char \n
proverbFirst.append(proverb.text[:-1])
for i in range(0, len(proverbFirst)):
if i%3 == 0 :
proverbList["Hanja"].append(proverbFirst[i])
elif i%3 == 1 :
proverbList["Hangul"].append(proverbFirst[i])
else :
proverbList["Meaning"].append(proverbFirst[i])
for i in range(0, len(proverbList["Hanja"])) :
print("Hanja : '" + proverbList["Hanja"][i] + "', Hangul : '" + proverbList["Hangul"][i] + "', Meaning : '" + proverbList["Meaning"][i]+"'")

웬 한자냐 인식 못 하면 어쩔 거냐?라는 걱정도 들지만 어차피 나 혼자 만들어 지지고 볶고 할 건데 글자가 깨져도 상관없지 않을까 싶어 냅다 해버렸다. 한문성어... 좋아해서... (하지만 잘 나오더라! 폰트 설정만 잘 해주면 될 것 같다. 한자 폰트 중에서 지원되는 한자가 있고, 아닌 한자가 있어서)
사실 사이트도 그냥 구글 검색으로 나오는 적당한 사이트로 시도하다가 클래스도 없고, 그러니 텍스트를 가져와도 이상하게 가져와지고... 해서 여러 페이지를 시도하다가 정말 최종_마지막_마지막_마지막_마지막에 발견한 사이트...
이왕이면 한자, 한글, 의미 태그가 다 달랐다면 좋았겠지만, 셋 다 td안에 들어있어도 텍스트를 온전히! 뽑아낼 수 있다는 것에서 기쁨을 느꼈다.
js에서 객체로 들어가야 하니까 딕셔너리로 시도해 봤고... 바깥에 대활호만 추가하려면 출력 부분을 조금 손봐야 할 것 같은데(중괄호 추가해야 함) 그건 자고 일어나서 하기로...
soup.find_all('div', class_="origin")
이거.. 뭐지..? 왜.. 있지..? 지우기엔 찝찝한데...
'Python' 카테고리의 다른 글
| 노마드 코더 Python으로 웹 스크래퍼 만들기 정리 (0) | 2022.09.28 |
|---|---|
| 점프 투 파이썬 정리 (0) | 2022.08.29 |