티스토리 뷰

 

해당 챗봇은 지역명을 사용자로부터 입력받으면, 해당 지역의 '미세먼지 농도'를 알려준다!

이를 위해서 먼저 파이썬으로 네이버 미세먼지 정보를 크롤링해야한다!

카카오 오픈빌더 승인이 아직 나지 않았기 때문에 나머지 과정은 추후에 올리도록 하겠다!

 

 

 

from urllib.request import urlopen, Request
from bs4 import BeautifulSoup
import urllib
import bs4

먼저 이렇게 모듈들을 import해준다

 

location=input()
enc_location=urllib.parse.quote(location+'미세먼지')
url='https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query='+enc_location

그리고 사용자로부터 input 받는 지역명을 location 변수에 넣어준다. 그리고 네이버에 '서울시 미세먼지'를 검색했을 때 url의 뒤가 '지역명+미세먼지'이기 때문에, 해당 url을 복사해오고, 사용자로부터 받은 지역명+미세먼지를 삽입해준다 

 

req=Request(url)
res=urlopen(req)
html=res.read()

이는 Request 모듈을 통해 우리가 아까 저장한 url을 http로 보내주고, res.read()로 해당 페이지를 읽어온다. 

soup=bs4.BeautifulSoup(html,'html.parser')
table=soup.find('div', class_='state_info').find('em',class_='main_figure').text      

이제 BeautifulSoup을 통해서 위에 저장된 html을 파싱해주고, 이를 soup에 저장해준 후, 이 soup에서 

우리가 가지고 오고자 하는 정보를 find한다! 그럼 이 find에 들어갈 값은 어떻게 알까 ?

 

이렇게 검색하고 개발자도구를 열어준다음, 가져오고자 하는 텍스트를 선택해주면 해당 텍스트가 어느 클래스에 있는 지알 수 있다. 여기서는 <div class ="sate_info"> 아래의 <span class="main_figure">에 속하므로, 그에 따라서 코딩을 해주면 된다.

fine_dust=int(table)
if(fine_dust<=30): 
    answer='현재 '+location+' 미세먼지 농도는 '+table+'로 좋음! 입니다'
elif(fine_dust<=80):
    answer='현재 '+location+' 미세먼지 농도는 '+table+'로 보통! 입니다'
elif(fine_dust<=150):
    answer='현재 '+location+' 미세먼지 농도는 '+table+'로 나쁨! 입니다'
elif(fine_dust>150):
    answer= '현재 '+location+' 미세먼지 농도는 '+table+'로 매우나쁨! 입니다'
print(answer)

그리고 마지막은, 추출해온 미세먼지 농도를 정수형으로 변환시키고, 그에 따라 알맞은 대답을 저장해주는 것이다

 

from urllib.request import urlopen, Request
from bs4 import BeautifulSoup
import urllib
import bs4


location=input()
enc_location=urllib.parse.quote(location+'미세먼지')
url='https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query='+enc_location

req=Request(url)
res=urlopen(req)
html=res.read()

soup=bs4.BeautifulSoup(html,'html.parser')
table=soup.find('div', class_='state_info').find('em',class_='main_figure').text    

fine_dust=int(table)
if(fine_dust<=30): 
    answer='현재 '+location+' 미세먼지 농도는 '+table+'로 좋음! 입니다'
elif(fine_dust<=80):
    answer='현재 '+location+' 미세먼지 농도는 '+table+'로 보통! 입니다'
elif(fine_dust<=150):
    answer='현재 '+location+' 미세먼지 농도는 '+table+'로 나쁨! 입니다'
elif(fine_dust>150):
    answer= '현재 '+location+' 미세먼지 농도는 '+table+'로 매우나쁨! 입니다'
print(answer)

이게바로 크롤링이 완성된 코드이다! 다음번에 오픈빌더 승인이 나면 구름IDE를 이용해서 챗봇 스킬을 등록해보자!!

 

 

https://beomi.github.io/gb-crawling/posts/2017-01-20-HowToMakeWebCrawler.html

 

requests와 BeautifulSoup으로 웹 크롤러 만들기 · GitBook

No results matching ""

beomi.github.io

https://2jinishappy.tistory.com/21

 

6월의 토이프로젝트: 파이썬과 카카오톡 i 오픈빌더를 이용한 아맞다우산 알리미(챗봇)

카카오톡 챗봇은 API형은 현재 서비스를 종료하고 오픈빌더를 이용한 챗봇 제작만 지원하고 있다 카카오톡 오픈빌더(https://i.kakao.com/login)를 들어가서 플러스친구 챗봇 만들기 버튼을 누르고 심사를 받으면..

2jinishappy.tistory.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함