카테고리 없음

08. Wep Scraping

nananakh 2023. 7. 3. 15:34

이제 다음 사전에서 'happiness' 단어를 검색해서 단어 이름과 뜻을 출력해주는 간단한 wep scraping 코드를 짜보자.

앞서 소개한 BeautifulSoup과 urlopen을 사용하기 위해 import 해주자.

from bs4 import BeautifulSoup 
from urllib.request import urlopen

그리고 다음 사전의 url 주소와 'happiness' 단어를 입력했을 때 url 주소를 분석하고 str 문장으로 만든다.

word = happiness
url = 'https://alldic.daum.net/search.do?q='+word

http_rsp = urlopen(url)
html_rsp = BeautifulSoup(http_rsp, 'html.paser')

이때, paser는 HTML이나 XML, JavaScript 등으로 쓰여진 소스들을 각 요소별로 나누는 것이다.

여기서는 HTML으로 쓰여진 소스를 나누는 것이므로 html.paser가 쓰인 것이다.

검색한 단어는 span Tag에 attr name은 class이고, attr value는 "txt_emph1"이다.

words = html_rsp.find('span', {'class':'txt_emph1'})
print(words.get_text())

이제 단어 뜻을 출력해보자.

'행복'이라는 뜻은 kew000082679라는 id에 들어있다. 하지만 id로 호출하면 '행복' 하나만 출력되므로 모든 단어 뜻을 출력하기 위해 부모 Tag인 class="txt_search"를 호출하겠다.

word_mean = html_rsp.find_all('span', {'class':'txt_search'})

for i in word_mean:
	print(i.get_text())

이제 'happy', 'sad', 'story', 'class' 단어와 단어 뜻을 출력하는 코드를 만들어 보자.

words = ['happy', 'sad', 'story', 'class']
url = 'https://alldic.daum.net/search.do?q='

for i in words:
	URL = url+i
    http = urlopen(URL)
    html_rsp = BeautifulSoup(http, 'html.paser')
    word = html_rsp.find('span', {'class':'txt_emph1'})
    word_mean = html_rsp.find_all('span', {'class':'txt_search'})
    print(word.get_text())
    for j in word_mean:
    	print(word_mean.get_text())