09.14 항해 2일차 TIL
1주차 프로젝트 닉네임 생성기
"내 이름을 정해줘!"
19조 (조윤재, 심선아, 한우석)
계속 해결이 안되던 "현재 페이지를 크롤링 하고 다음 페이지로 넘어가기" 기능이 드디어 어느정도 구현이 되었다. 어제 오전 10시부터 오늘 오후 3시까지 정말 한 발자국도 나가지 못해 조급해 하고 있었는데 갑자기 해결이 되니까 마음이 편해지고 그 문제가 해결 되고 기능이 정상적으로 돌아가는걸 보면서 뭔가 엄청 뿌듯한 느낌을 받았다.
이번에도 어차피 에러가 발생 할 것이라고 생각하며 한줄 한줄 써내려간 그 코드가 제 기능을 할 때 그 기분... 그 맛을 잊을 수 없다.. 그 하나가 해결 되니 다음 스텝이 어느정도 보이면서 내가 갈 길이 만들어진 기분 이였다.
구현 기능
- 명사, 형용사, 동물, 과일 단어 크롤링 후 DB 저장
def wiki_words_noun_crawler(page): # 현재 페이지의 https://ko.wiktionary.org 를 제외한 부분을 받는다.
url = f'https://ko.wiktionary.org{page}' # 현재 페이지의 링크를 url 변수에 저장
count = 0
for re in range(150):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(f'{url}', headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#mw-pages')
try:
for tr in trs: # tr은 #mw-pages 리스트 만큼 반복
rink = tr.select_one('a:nth-child(4)')['href'] # 다음 페이지 링크를 rink 변수에 저장
words = soup.select('#mw-pages > div > div > div > ul > li') # 현재 페이지 명사를 words 변수에 저장
url = f'https://ko.wiktionary.org{rink}' # 다음 페이지 링크를 url 로 넘겨준다.
for word in words: # word는 현재 페이지 명사 리스트 만큼 반복
all_words = word.select_one('a').text # 명사 텍스트 추출
if len(all_words) > 1: # 2글자 이상 텍스트만 구함
count += 1
# print(all_words)
doc = {
'word': all_words,
'class': 'noun'
}
db.wordsdb.insert_one(doc) # 크롤링한 명사 데이터 DB에 저장
except: # 오류가 나와도 메시지 출력 안함 (ㄱ,ㄲ,ㄳ,다음페이지 없음 등 필요없는 데이터)
('')
print(str(count) + '항목 Noun DB Upload Successes!') # 완료 메시지 출력
Author And Source
이 문제에 관하여(09.14 항해 2일차 TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wswj9608/09.14-항해-2일차-TIL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)