파이썬: 웹 스크래핑
웹 스크래핑(Web Scraping)
웹 스크래핑이란 특정 웹사이트의 특정 데이터를 수집하는 작업을 의미한다.
최근 빅데이터 분석이나 머신러닝이 떠오르면서, 대량의 데이터를 수집하는 것이 중요한 작업이 되면서 웹 스크래핑 역시 중요한 기법 중에 하나가 되었다.
추가 관련 용어
-
웹 크롤링(Crawling)
웹 크롤링이란 ‘조직적, 자동화된 방법으로 월드 와이드 웹을 탐색하는 작업’을 의미하며 이 작업을 수행하는 컴퓨터 프로그램을 ‘웹 크롤러(crawler)’라고 한다.
웹 스크래핑과 웹 크롤링 두 용어는 정의상 엄연히 차이가 있다.
웹 스크래핑은 분명한 목적을 갖고 특정 웹페이지의 소스를 파싱하여 원하는 데이터를 추출한다.
반면 웹 크롤링은 대체로 특정 목적이 있지 않아도 광범위의 웹사이트들을 계속해서 탐색하며 그 사이트들의 복사본을 형성하고, 이를 이용하여 빠른 검색이나 사이트 자동 유지관리를 하는데 기여할 수 있는 작업을 의미한다. 자세한 것은 더 공부를 해야 알 수 있을 것이다.
허나 많은 곳에서 웹 스크래핑과 웹 크롤링 용어가 혼용되고 있으니 주의 깊게 사용해야 한다.
이 포스팅에서 다루는 작업은 ‘웹 스크래핑’이다.
-
파싱(Parsing)
파싱이란 어떤 페이지(문서/html 등)에서 원하는 데이터를 특정 패턴이나 순서로 추출하여 가공하는 것을 의미한다.
외부 데이터 처리
- 웹상에 존재하는 데이터를 수집하는 방법은 크게 두가지로 나뉜다.
- 공공데이터나 오픈된 데이터를 파일로 다운 받아서 사용(csv, 엑셀, xml, json…)
- 웹 페이지를 읽어서 데이터 분석(그 웹 페이지 구조를 분석해야함)
그러면 구글 홈페이지를 한번 스크래핑 해보자.
- requests: http 요청을 편리하게 보낼 수 있게 해주는 패키지
# 웹페이지 html 소스 스크래핑
#pip install requests
import requests
html = requests.get('https://google.com').text #웹 요청을 보내 해당 url의 html 소스 get
html
'<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ko"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"><title>Google</title><script nonce="RYdk48pkDI4/Cja+STyZQA==">(function(){window.google={kEI:\'Ab3eYIGeCaeOr7wPrfyNsAE\',kEXPI:\'0,18168,184142,569905,1,530320,56873,954,5104,207,4804,2316,383,246,5,1354,5251,16231,10,1106274,1197742,540,93,328892,51223,16115,28684,17572,4859,1361,9290,3027,4748,7993,4841,4020,978,13228,3847,4192,6430,7432,7096,234,4283,2777,919,2855,2226,1593,1279,2212,239,291,149,1103,840,2197,4100,109,4011,2023,2297,7875,6795,3227,2845,7,12354,5096,7877,5036,1456,1953,906,2,940,2615,13142,3,576,6459,149,13975,4,1252,276,2304,1236,5227,576,4683,2015,4067,14308,2658,6701,483,173,30,3878,9750,2305,638,7080,10535,665,2521,3303,2533,992,3102,18,3120,6,613,295,3,3541,1,11337,606,2767,1814,283,389,2,1,3,519,5990,6754,984,4788,2,1394,2806,1721,2,3051,2017,3335,815,4798,1931,1532,2377,93,1713,617,1275,4172,406,2091,1480,1,125,172,1001,1571,1015,1865,100,2,442,598,75,1085,1365,3330,2,1711,292,1440,33,904,1401,1320,3673,669,204,3,56,4678,682,57,13,1447,321,1739,394,7,9,1,1064,226,168,69,110,2,233,6,1773,386,2,1,250,2,6,65,2,6,42,1744,442,118,478,454,4976,439,133,290,358,16,17,22,2,295,145,420,327,6,1032,170,587,1185,18,5621565,189,5,32,63,157,59,59,5996750,11,114,2800572,882,444,1,2,80,1,1796,1,9,2,2551,1,748,141,795,563,1,4265,1,1,2,1331,3299,843,2609,155,17,13,72,139,4,2,20,2,169,13,19,46,5,39,96,548,29,2,2,1,2,1,2,2,7,4,1,2,2,2,2,2,2,353,222,8,283,186,1,1,38,3,3,2,2,2,53,28,1,1,14,5,6,3,2,2,2,2,2,4,2,3,3,21,23954970,2857454,8573,1144247,268,1835,26467,2,2374,3,120,3,6,338,3,1454,386,499,75,1017,762\',kBL:\'agTH\'};google.sn=\'webhp\';google.kHL=\'ko\';})();(function(){\nvar f=this||self;var h,k=[];function l(a){for(var b;a&&(!a.getAttribute||!(b=a.getAttribute("eid")));)a=a.parentNode;return b||h}function m(a){for(var b=null;a&&(!a.getAttribute||!(b=a.getAttribute("leid")));)a=a.parentNode;return b}\nfunction n(a,b,c,d,g){var e="";c||-1!==b.search("&ei=")||(e="&ei="+l(d),-1===b.search("&lei=")&&(d=m(d))&&(e+="&lei="+d));d="";!c&&f._cshid&&-1===b.search("&cshid=")&&"slh"!==a&&(d="&cshid="+f._cshid);c=c||"/"+(g||"gen_204")+"?atyp=i&ct="+a+"&cad="+b+e+"&zx="+Date.now()+d;/^http:/i.test(c)&&"https:"===window.location.protocol&&(google.ml&&google.ml(Error("a"),!1,{src:c,glmm:1}),c="");return c};h=google.kEI;google.getEI=l;google.getLEI=m;google.ml=function(){return null};google.log=function(a,b,c,d,g){if(c=n(a,b,c,d,g)){a=new Image;var e=k.length;k[e]=a;a.onerror=a.onload=a.onabort=function(){delete k[e]};a.src=c}};google.logUrl=n;}).call(this);(function(){\ngoogle.y={};google.sy=[];google.x=function(a,b){if(a)var c=a.id;else{do c=Math.random();while(google.y[c])}google.y[c]=[a,b];return!1};google.sx=function(a){google.sy.push(a)};google.lm=[];google.plm=function(a){google.lm.push.apply(google.lm,a)};google.lq=[];google.load=function(a,b,c){google.lq.push([[a],b,c])};google.loadAll=function(a,b){google.lq.push([a,b])};google.bx=!1;google.lx=function(){};}).call(this);google.f={};(function(){\ndocument.documentElement.addEventListener("submit",function(b){var a;if(a=b.target){var c=a.getAttribute("data-submitfalse");a="1"==c||"q"==c&&!a.elements.q.value?!0:!1}else a=!1;a&&(b.preventDefault(),b.stopPropagation())},!0);document.documentElement.addEventListener("click",function(b){var a;a:{for(a=b.target;a&&a!=document.documentElement;a=a.parentElement)if("A"==a.tagName){a="1"==a.getAttribute("data-nohref");break a}a=!1}a&&b.preventDefault()},!0);}).call(this);</script><style>#gbar,#guser{font-size:13px;padding-top:1px !important;}#gbar{height:22px}#guser{padding-bottom:7px !important;text-align:right}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}@media all{.gb1{height:22px;margin-right:.5em;vertical-align:top}#gbar{float:left}}a.gb1,a.gb4{text-decoration:underline !important}a.gb1,a.gb4{color:#00c !important}.gbi .gb4{color:#dd8e27 !important}.gbf .gb4{color:#900 !important}\n</style><style>body,td,a,p,.h{font-family:굴림,돋움,arial,sans-serif}.ko{font-size:9pt}body{margin:0;overflow-y:scroll}#gog{padding:3px 8px 0}td{line-height:.8em}.gac_m td{line-height:17px}form{margin-bottom:20px}.h{color:#1558d6}em{font-weight:bold;font-style:normal}.lst{height:25px;width:496px}.gsfi,.lst{font:18px arial,sans-serif}.gsfs{font:17px arial,sans-serif}.ds{display:inline-box;display:inline-block;margin:3px 0 4px;margin-left:4px}input{font-family:inherit}body{background:#fff;color:#000}a{color:#4b11a8;text-decoration:none}a:hover,a:active{text-decoration:underline}.fl a{color:#1558d6}a:visited{color:#4b11a8}.sblc{padding-top:5px}.sblc a{display:block;margin:2px 0;margin-left:13px;font-size:11px}.lsbb{background:#f8f9fa;border:solid 1px;border-color:#dadce0 #70757a #70757a #dadce0;height:30px}.lsbb{display:block}#WqQANb a{display:inline-block;margin:0 12px}.lsb{background:url(/images/nav_logo229.png) 0 -261px repeat-x;border:none;color:#000;cursor:pointer;height:30px;margin:0;outline:0;font:15px arial,sans-serif;vertical-align:top}.lsb:active{background:#dadce0}.lst:focus{outline:none}.tiah{width:458px}</style><script nonce="RYdk48pkDI4/Cja+STyZQA=="></script></head><body bgcolor="#fff"><script nonce="RYdk48pkDI4/Cja+STyZQA==">(function(){var src=\'/images/nav_logo229.png\';var iesg=false;document.body.onload = function(){window.n && window.n();if (document.images){new Image().src=src;}\nif (!iesg){document.f&&document.f.q.focus();document.gbqf&&document.gbqf.q.focus();}\n}\n})();</script><div id="mngb"><div id=gbar><nobr><b class=gb1>검색</b> <a class=gb1 href="https://www.google.co.kr/imghp?hl=ko&tab=wi">이미지</a> <a class=gb1 href="https://maps.google.co.kr/maps?hl=ko&tab=wl">지도</a> <a class=gb1 href="https://play.google.com/?hl=ko&tab=w8">Play</a> <a class=gb1 href="https://www.youtube.com/?gl=KR&tab=w1">YouTube</a> <a class=gb1 href="https://news.google.com/?tab=wn">뉴스</a> <a class=gb1 href="https://mail.google.com/mail/?tab=wm">Gmail</a> <a class=gb1 href="https://drive.google.com/?tab=wo">드라이브</a> <a class=gb1 style="text-decoration:none" href="https://www.google.co.kr/intl/ko/about/products?tab=wh"><u>더보기</u> »</a></nobr></div><div id=guser width=100%><nobr><span id=gbn class=gbi></span><span id=gbf class=gbf></span><span id=gbe></span><a href="http://www.google.co.kr/history/optout?hl=ko" class=gb4>웹 기록</a> | <a href="/preferences?hl=ko" class=gb4>설정</a> | <a target=_top id=gb_70 href="https://accounts.google.com/ServiceLogin?hl=ko&passive=true&continue=https://www.google.com/&ec=GAZAAQ" class=gb4>로그인</a></nobr></div><div class=gbh style=left:0></div><div class=gbh style=right:0></div></div><center><br clear="all" id="lgpd"><div id="lga"><img alt="Google" height="92" src="/images/branding/googlelogo/1x/googlelogo_white_background_color_272x92dp.png" style="padding:28px 0 14px" width="272" id="hplogo"><br><br></div><form action="/search" name="f"><table cellpadding="0" cellspacing="0"><tr valign="top"><td width="25%"> </td><td align="center" nowrap=""><input name="ie" value="ISO-8859-1" type="hidden"><input value="ko" name="hl" type="hidden"><input name="source" type="hidden" value="hp"><input name="biw" type="hidden"><input name="bih" type="hidden"><div class="ds" style="height:32px;margin:4px 0"><div style="position:relative;zoom:1"><input class="lst tiah" style="margin:0;padding:5px 8px 0 6px;vertical-align:top;color:#000;padding-right:38px" autocomplete="off" value="" title="Google 검색" maxlength="2048" name="q" size="57"><img src="/textinputassistant/tia.png" style="position:absolute;cursor:pointer;right:5px;top:4px;z-index:300" data-script-url="/textinputassistant/11/ko_tia.js" id="tsuid1" alt="" height="23" width="27"><script nonce="RYdk48pkDI4/Cja+STyZQA==">(function(){var id=\'tsuid1\';document.getElementById(id).onclick = function(){var s = document.createElement(\'script\');s.src = this.getAttribute(\'data-script-url\');(document.getElementById(\'xjsc\')||document.body).appendChild(s);};})();</script></div></div><br style="line-height:0"><span class="ds"><span class="lsbb"><input class="lsb" value="Google 검색" name="btnG" type="submit"></span></span><span class="ds"><span class="lsbb"><input class="lsb" id="tsuid2" value="I’m Feeling Lucky" name="btnI" type="submit"><script nonce="RYdk48pkDI4/Cja+STyZQA==">(function(){var id=\'tsuid2\';document.getElementById(id).onclick = function(){if (this.form.q.value){this.checked = 1;if (this.form.iflsig)this.form.iflsig.disabled = false;}\nelse top.location=\'/doodles/\';};})();</script><input value="AINFCbYAAAAAYN7LER5d1H_wuADO03mCN7G-3_YcVACZ" name="iflsig" type="hidden"></span></span></td><td class="fl sblc" align="left" nowrap="" width="25%"><a href="/advanced_search?hl=ko&authuser=0">고급검색</a></td></tr></table><input id="gbv" name="gbv" type="hidden" value="1"><script nonce="RYdk48pkDI4/Cja+STyZQA==">(function(){\nvar a,b="1";if(document&&document.getElementById)if("undefined"!=typeof XMLHttpRequest)b="2";else if("undefined"!=typeof ActiveXObject){var c,d,e=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];for(c=0;d=e[c++];)try{new ActiveXObject(d),b="2"}catch(h){}}a=b;if("2"==a&&-1==location.search.indexOf("&gbv=2")){var f=google.gbvu,g=document.getElementById("gbv");g&&(g.value=a);f&&window.setTimeout(function(){location.href=f},0)};}).call(this);</script></form><div id="gac_scont"></div><div style="font-size:83%;min-height:3.5em"><br></div><span id="footer"><div style="font-size:10pt"><div style="margin:19px auto;text-align:center" id="WqQANb"><a href="/intl/ko/ads/">광고 프로그램</a><a href="http://www.google.co.kr/intl/ko/services/">비즈니스 솔루션</a><a href="/intl/ko/about.html">Google 정보</a><a href="https://www.google.com/setprefdomain?prefdom=KR&prev=https://www.google.co.kr/&sig=K_GoTjWU6WU0Ke3fyaBZdFIxv3tl0%3D">Google.co.kr</a></div></div><p style="font-size:8pt;color:#70757a">© 2021 - <a href="/intl/ko/policies/privacy/">개인정보처리방침</a> - <a href="/intl/ko/policies/terms/">약관</a></p></span></center><script nonce="RYdk48pkDI4/Cja+STyZQA==">(function(){window.google.cdo={height:757,width:1440};(function(){\nvar a=window.innerWidth,b=window.innerHeight;if(!a||!b){var c=window.document,d="CSS1Compat"==c.compatMode?c.documentElement:c.body;a=d.clientWidth;b=d.clientHeight}a&&b&&(a!=google.cdo.width||b!=google.cdo.height)&&google.log("","","/client_204?&atyp=i&biw="+a+"&bih="+b+"&ei="+google.kEI);}).call(this);})();</script> <script nonce="RYdk48pkDI4/Cja+STyZQA==">(function(){google.xjs={ck:\'\',cs:\'\',excm:[],pml:false};})();</script> <script nonce="RYdk48pkDI4/Cja+STyZQA==">(function(){var u=\'/xjs/_/js/k\\x3dxjs.hp.en.b02EctaivfE.O/m\\x3dsb_he,d/am\\x3dAHgCLA/d\\x3d1/ed\\x3d1/rs\\x3dACT90oHUAsFQThMGCtNqHFlxhDQRoX8v8g\';\nvar e=this||self,f=function(a){return a};var g;var l=function(a,b){this.g=b===h?a:""};l.prototype.toString=function(){return this.g+""};var h={};function m(){var a=u;google.lx=function(){n(a);google.lx=function(){}};google.bx||google.lx()}\nfunction n(a){google.timers&&google.timers.load&&google.tick&&google.tick("load","xjsls");var b=document;var c="SCRIPT";"application/xhtml+xml"===b.contentType&&(c=c.toLowerCase());c=b.createElement(c);if(void 0===g){b=null;var k=e.trustedTypes;if(k&&k.createPolicy){try{b=k.createPolicy("goog#html",{createHTML:f,createScript:f,createScriptURL:f})}catch(p){e.console&&e.console.error(p.message)}g=b}else g=b}a=(b=g)?b.createScriptURL(a):a;a=new l(a,h);c.src=a instanceof l&&a.constructor===l?a.g:"type_error:TrustedResourceUrl";var d;a=(c.ownerDocument&&c.ownerDocument.defaultView||window).document;(d=(a=null===(d=a.querySelector)||void 0===d?void 0:d.call(a,"script[nonce]"))?a.nonce||a.getAttribute("nonce")||"":"")&&c.setAttribute("nonce",d);document.body.appendChild(c);google.psa=!0};setTimeout(function(){m()},0);})();(function(){window.google.xjsu=\'/xjs/_/js/k\\x3dxjs.hp.en.b02EctaivfE.O/m\\x3dsb_he,d/am\\x3dAHgCLA/d\\x3d1/ed\\x3d1/rs\\x3dACT90oHUAsFQThMGCtNqHFlxhDQRoX8v8g\';})();function _DumpException(e){throw e;}\nfunction _F_installCss(c){}\n(function(){google.jl={attn:false,blt:\'none\',dw:false,emtn:0,ine:false,lls:\'default\',pdt:0,snet:true,ubm:false,uwp:true};})();(function(){var pmc=\'{\\x22d\\x22:{},\\x22sb_he\\x22:{\\x22agen\\x22:true,\\x22cgen\\x22:true,\\x22client\\x22:\\x22heirloom-hp\\x22,\\x22dh\\x22:true,\\x22dhqt\\x22:true,\\x22ds\\x22:\\x22\\x22,\\x22ffql\\x22:\\x22ko\\x22,\\x22fl\\x22:true,\\x22host\\x22:\\x22google.com\\x22,\\x22isbh\\x22:28,\\x22jsonp\\x22:true,\\x22msgs\\x22:{\\x22cibl\\x22:\\x22검색어 지우기\\x22,\\x22dym\\x22:\\x22이것을 찾으셨나요?\\x22,\\x22lcky\\x22:\\x22I’m Feeling Lucky\\x22,\\x22lml\\x22:\\x22자세히 알아보기\\x22,\\x22oskt\\x22:\\x22입력 도구\\x22,\\x22psrc\\x22:\\x22검색어가 \\\\u003Ca href\\x3d\\\\\\x22/history\\\\\\x22\\\\u003E웹 기록\\\\u003C/a\\\\u003E에서 삭제되었습니다.\\x22,\\x22psrl\\x22:\\x22삭제\\x22,\\x22sbit\\x22:\\x22이미지로 검색\\x22,\\x22srch\\x22:\\x22Google 검색\\x22},\\x22nrft\\x22:false,\\x22ovr\\x22:{},\\x22pq\\x22:\\x22\\x22,\\x22refpd\\x22:true,\\x22refspre\\x22:true,\\x22rfs\\x22:[],\\x22sbas\\x22:\\x220 3px 8px 0 rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.08)\\x22,\\x22sbpl\\x22:16,\\x22sbpr\\x22:16,\\x22scd\\x22:10,\\x22stok\\x22:\\x22ogKNkuovqJuekwiOwaP0VepCSZs\\x22,\\x22uhde\\x22:false}}\';google.pmc=JSON.parse(pmc);})();</script> </body></html>'
- Beautifulsoup: html, xml 형식의 소스를 파싱하여 DOM 객체로 변환해주는 패키지
- 태그 단위로 손쉽게 소스를 추출할 수 있다.
#pip install beautifulsoup4
from bs4 import BeautifulSoup # for html parsing
content = BeautifulSoup(html, 'html.parser') #html소스를 DOM(document object model) 객체화
# BeautifulSoup(html, 'parser 종류')
title = content.html.head.title #소스에서 title 태그 추출
print(title.string) #string:태그의 텍스트 값 <태그>텍스트</태그>
Google
1. html 태그 접근 방법
- root.html.body.h1 : 태그 한개 검색
- root.find(태그[속성]): 태그 1개 검색(반드시 ‘속성’은 고유한 값임)
- root.find_all(태그[속성]): 태그 모두 검색(반환값이 리스트)
- root.select(태그): 태그 모두 검색
#link = content.html.body.a #처음 a 태그 하나만 추출
links = content.find_all('a') # a 태그들을 몽땅 추출
links
[<a class="gb1" href="https://www.google.co.kr/imghp?hl=ko&tab=wi">이미지</a>,
<a class="gb1" href="https://maps.google.co.kr/maps?hl=ko&tab=wl">지도</a>,
<a class="gb1" href="https://play.google.com/?hl=ko&tab=w8">Play</a>,
<a class="gb1" href="https://www.youtube.com/?gl=KR&tab=w1">YouTube</a>,
<a class="gb1" href="https://news.google.com/?tab=wn">뉴스</a>,
<a class="gb1" href="https://mail.google.com/mail/?tab=wm">Gmail</a>,
<a class="gb1" href="https://drive.google.com/?tab=wo">드라이브</a>,
<a class="gb1" href="https://www.google.co.kr/intl/ko/about/products?tab=wh" style="text-decoration:none"><u>더보기</u> »</a>,
<a class="gb4" href="http://www.google.co.kr/history/optout?hl=ko">웹 기록</a>,
<a class="gb4" href="/preferences?hl=ko">설정</a>,
<a class="gb4" href="https://accounts.google.com/ServiceLogin?hl=ko&passive=true&continue=https://www.google.com/&ec=GAZAAQ" id="gb_70" target="_top">로그인</a>,
<a href="/advanced_search?hl=ko&authuser=0">고급검색</a>,
<a href="/intl/ko/ads/">광고 프로그램</a>,
<a href="http://www.google.co.kr/intl/ko/services/">비즈니스 솔루션</a>,
<a href="/intl/ko/about.html">Google 정보</a>,
<a href="https://www.google.com/setprefdomain?prefdom=KR&prev=https://www.google.co.kr/&sig=K_qSU2i_5xt6kb-AE7ha4VFtmBjls%3D">Google.co.kr</a>,
<a href="/intl/ko/policies/privacy/">개인정보처리방침</a>,
<a href="/intl/ko/policies/terms/">약관</a>]
links = content.find_all('a') # a 태그들을 몽땅 추출
for i in links:
print(i.get_text(), ':', i['href'])#속성값 읽기
이미지 : https://www.google.co.kr/imghp?hl=ko&tab=wi
지도 : https://maps.google.co.kr/maps?hl=ko&tab=wl
Play : https://play.google.com/?hl=ko&tab=w8
YouTube : https://www.youtube.com/?gl=KR&tab=w1
뉴스 : https://news.google.com/?tab=wn
Gmail : https://mail.google.com/mail/?tab=wm
드라이브 : https://drive.google.com/?tab=wo
더보기 » : https://www.google.co.kr/intl/ko/about/products?tab=wh
웹 기록 : http://www.google.co.kr/history/optout?hl=ko
설정 : /preferences?hl=ko
로그인 : https://accounts.google.com/ServiceLogin?hl=ko&passive=true&continue=https://www.google.com/&ec=GAZAAQ
고급검색 : /advanced_search?hl=ko&authuser=0
광고 프로그램 : /intl/ko/ads/
비즈니스 솔루션 : http://www.google.co.kr/intl/ko/services/
Google 정보 : /intl/ko/about.html
Google.co.kr : https://www.google.com/setprefdomain?prefdom=KR&prev=https://www.google.co.kr/&sig=K_qSU2i_5xt6kb-AE7ha4VFtmBjls%3D
개인정보처리방침 : /intl/ko/policies/privacy/
약관 : /intl/ko/policies/terms/
# sample html 생성
html = '<html>'
html += '<body>'
html += '<p class=a>aaa</p>'
html += '<p class=b>bbb</p>'
html += '<p class=a>ccc</p>'
html += '<p class=a id=xxx>ddd</p>'
html += '</body>'
html += '</html>'
# 다양한 방법으로 특정 요소에 접근해보기
root = BeautifulSoup(html, 'html.parser') # parsing한 것을 root에 담는다.
## find_all: 여러개의 검색 결과를 리스트 반환
# 태그가 p인 모든 것
p1 = root.find_all('p')
print('p1:', p1)
# 태그가 p, 클래스가 a인 것 모두
p2 = root.find_all('p', {'class':'a'}) # find_all(태그, 검색조건(딕셔너리)
print('p2:', p2)
# 태그가 p, 클래스가 b인 것 모두
p3 = root.find_all('p', {'class':'b'})
print('p3:', p3)
## find: 맨 처음 하나의 값만 반환(리스트 x)
# 태그가 p, 클래스가 a면서 id가 xxx인 것 중 맨 처음 하나
p4 = root.find('p', {'class':'a', 'id': 'xxx'})
print('p4:', p4)
## select: 여러개 검색하는 함수. 반환 타입이 '리스트'
# 태그가 p인 모든 것
p5 = root.select('p')
print('p5:', p5)
## select(태그.클래스명)
# 태그이름이 p, 클래스이름이 a인 모든 것
p6 = root.select('p.a') #태그.클래스명 //태그#id명 (규칙임)
print('p6:', p6)
# 태그이름이 p, 클래스이름이 b인 모든 것
p7 = root.select('p.b')
print('p7:', p7)
## select(태그#id)
# 태그이름이 p고, id가 xxx인 것
p8 = root.select('p#xxx')
print('p8:', p8)
p1: [<p class="a">aaa</p>, <p class="b">bbb</p>, <p class="a">ccc</p>, <p class="a" id="xxx">ddd</p>]
p2: [<p class="a">aaa</p>, <p class="a">ccc</p>, <p class="a" id="xxx">ddd</p>]
p3: [<p class="b">bbb</p>]
p4: <p class="a" id="xxx">ddd</p>
p5: [<p class="a">aaa</p>, <p class="b">bbb</p>, <p class="a">ccc</p>, <p class="a" id="xxx">ddd</p>]
p6: [<p class="a">aaa</p>, <p class="a">ccc</p>, <p class="a" id="xxx">ddd</p>]
p7: [<p class="b">bbb</p>]
p8: [<p class="a" id="xxx">ddd</p>]
결국 원하는 데이터에 적절하게 접근하기 위해선, 그 사이트의 html소스 구조에 대하여 정확하게 파악하고 있어야 한다.
2. XML
# 날씨정보(xml)
html = requests.get('http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp').text #웹 요청
#html=html.decode('utf-8')
#지역별 일간 날씨를 출력
root = BeautifulSoup(html, 'html.parser')
loc = root.find_all('location') # location 태그들에 각각 도시의 날씨정보가 들어가 있다.
for i in loc: # location 태그들을 하나씩 가져온다.
print(i.city.get_text(), '지역 날씨========') # 도시명은 city태그의 텍스트값
d = i.find_all('data') # 그 location 태그의 하위태그명이 data인 모든 데이터를 d에 담음
for j in d:
# '시간 : 날씨' 만 출력
# print(j.tmef.string , ':', j.wf.string)
print(j.tmef.string , ' / 날씨:', j.wf.string, ' / 최저온도:', j.tmn.string,
' / 최고기온:', j.tmx.string, ' / 습도:', j.rnst.string, '%')
서울 지역 날씨========
2021-07-05 00:00 / 날씨: 구름많음 / 최저온도: 22 / 최고기온: 29 / 습도: 30 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-06 00:00 / 날씨: 구름많음 / 최저온도: 22 / 최고기온: 28 / 습도: 30 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-07 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 60 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 70 %
인천 지역 날씨========
2021-07-05 00:00 / 날씨: 구름많음 / 최저온도: 21 / 최고기온: 27 / 습도: 30 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 27 / 습도: 40 %
2021-07-06 00:00 / 날씨: 구름많음 / 최저온도: 22 / 최고기온: 28 / 습도: 30 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 27 / 습도: 40 %
2021-07-07 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 27 / 습도: 40 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 60 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 27 / 습도: 40 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 70 %
수원 지역 날씨========
2021-07-05 00:00 / 날씨: 구름많음 / 최저온도: 21 / 최고기온: 29 / 습도: 30 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 29 / 습도: 40 %
2021-07-06 00:00 / 날씨: 구름많음 / 최저온도: 22 / 최고기온: 28 / 습도: 30 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 28 / 습도: 40 %
2021-07-07 12:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 28 / 습도: 40 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 70 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 70 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 60 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 70 %
파주 지역 날씨========
2021-07-05 00:00 / 날씨: 구름많음 / 최저온도: 19 / 최고기온: 28 / 습도: 30 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 19 / 최고기온: 28 / 습도: 40 %
2021-07-06 00:00 / 날씨: 구름많음 / 최저온도: 20 / 최고기온: 28 / 습도: 30 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 28 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 27 / 습도: 40 %
2021-07-07 12:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 27 / 습도: 40 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 70 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 70 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 27 / 습도: 60 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 27 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 28 / 습도: 40 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 27 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 70 %
이천 지역 날씨========
2021-07-05 00:00 / 날씨: 구름많음 / 최저온도: 19 / 최고기온: 27 / 습도: 30 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 19 / 최고기온: 27 / 습도: 40 %
2021-07-06 00:00 / 날씨: 구름많음 / 최저온도: 21 / 최고기온: 28 / 습도: 30 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 28 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 28 / 습도: 40 %
2021-07-07 12:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 28 / 습도: 40 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 70 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 70 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 60 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 70 %
평택 지역 날씨========
2021-07-05 00:00 / 날씨: 구름많음 / 최저온도: 20 / 최고기온: 29 / 습도: 30 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 29 / 습도: 40 %
2021-07-06 00:00 / 날씨: 구름많음 / 최저온도: 22 / 최고기온: 27 / 습도: 30 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 27 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 28 / 습도: 40 %
2021-07-07 12:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 28 / 습도: 40 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 60 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 70 %
춘천 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 29 / 습도: 40 %
2021-07-05 12:00 / 날씨: 구름많음 / 최저온도: 20 / 최고기온: 29 / 습도: 30 %
2021-07-06 00:00 / 날씨: 구름많음 / 최저온도: 21 / 최고기온: 28 / 습도: 30 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 28 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-07 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 60 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 70 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 60 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
원주 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 28 / 습도: 40 %
2021-07-05 12:00 / 날씨: 구름많음 / 최저온도: 20 / 최고기온: 28 / 습도: 30 %
2021-07-06 00:00 / 날씨: 구름많음 / 최저온도: 21 / 최고기온: 28 / 습도: 30 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 28 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-07 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 60 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 60 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
강릉 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 27 / 습도: 40 %
2021-07-05 12:00 / 날씨: 구름많음 / 최저온도: 21 / 최고기온: 27 / 습도: 30 %
2021-07-06 00:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 28 / 습도: 40 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 28 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 26 / 습도: 40 %
2021-07-07 12:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 26 / 습도: 40 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 26 / 습도: 70 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 26 / 습도: 60 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 26 / 습도: 70 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 26 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 27 / 습도: 40 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 70 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 60 %
대전 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 26 / 습도: 40 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 26 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 70 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 60 %
세종 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 29 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 29 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 26 / 습도: 40 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 26 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 90 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 90 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 60 %
홍성 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 29 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 29 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 26 / 습도: 40 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 26 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 90 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 70 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 60 %
청주 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 30 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 30 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 28 / 습도: 40 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 28 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 28 / 습도: 40 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 70 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 70 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 70 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 60 %
충주 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 29 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 29 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 60 %
영동 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 30 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 30 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 28 / 습도: 40 %
2021-07-06 12:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 28 / 습도: 40 %
2021-07-07 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 30 / 습도: 40 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 30 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 80 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 70 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 80 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 30 / 습도: 70 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 70 %
2021-07-12 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 31 / 습도: 60 %
광주 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 70 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 90 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 29 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 29 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 29 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 29 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 24 / 최고기온: 31 / 습도: 40 %
목포 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 70 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 80 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 27 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 27 / 습도: 90 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 28 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 28 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 28 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 28 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 28 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 28 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 24 / 최고기온: 29 / 습도: 40 %
여수 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 26 / 습도: 70 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 26 / 습도: 80 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 26 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 26 / 습도: 90 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 28 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 28 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 27 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 27 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 26 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 26 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 26 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 27 / 습도: 40 %
순천 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 70 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 90 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 29 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 29 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 24 / 최고기온: 29 / 습도: 40 %
광양 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 70 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 90 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 24 / 최고기온: 29 / 습도: 40 %
나주 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 70 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 90 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 24 / 최고기온: 31 / 습도: 40 %
전주 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 29 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 29 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 90 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 24 / 최고기온: 31 / 습도: 40 %
군산 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 29 / 습도: 40 %
정읍 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 90 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 30 / 습도: 40 %
남원 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 90 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 30 / 습도: 40 %
고창 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 24 / 최고기온: 28 / 습도: 40 %
무주 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 29 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 29 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 26 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 26 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 90 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 90 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 30 / 습도: 40 %
부산 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 26 / 습도: 90 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 26 / 습도: 90 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 26 / 습도: 90 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 26 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 70 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 27 / 습도: 40 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 27 / 습도: 40 %
울산 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 90 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 90 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 90 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 70 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 28 / 습도: 40 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 29 / 습도: 40 %
창원 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 90 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 90 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 26 / 습도: 90 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 26 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 70 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 28 / 습도: 40 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 28 / 습도: 40 %
진주 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 90 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 90 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 90 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 70 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 28 / 습도: 40 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 29 / 습도: 40 %
거창 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 20 / 최고기온: 28 / 습도: 90 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 20 / 최고기온: 28 / 습도: 90 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 27 / 습도: 90 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 27 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 70 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 80 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 28 / 습도: 40 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 30 / 습도: 40 %
통영 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 26 / 습도: 90 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 26 / 습도: 90 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 26 / 습도: 90 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 26 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 70 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 27 / 습도: 40 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 28 / 습도: 40 %
대구 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 31 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 31 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 30 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 30 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 31 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 31 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 30 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 30 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 31 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 30 / 습도: 40 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 30 / 습도: 40 %
안동 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 28 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 28 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 28 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 30 / 습도: 40 %
포항 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 27 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 27 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 27 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 24 / 최고기온: 28 / 습도: 40 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 24 / 최고기온: 28 / 습도: 40 %
경주 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 27 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 27 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 29 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 29 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 28 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 27 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 22 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 29 / 습도: 40 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 23 / 최고기온: 29 / 습도: 40 %
울진 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 25 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 25 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 25 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 25 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 25 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 25 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 25 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 25 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 25 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 25 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 25 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 22 / 최고기온: 26 / 습도: 40 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 26 / 습도: 40 %
울릉도 지역 날씨========
2021-07-05 00:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 24 / 습도: 40 %
2021-07-05 12:00 / 날씨: 흐림 / 최저온도: 20 / 최고기온: 24 / 습도: 40 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 20 / 최고기온: 24 / 습도: 80 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 20 / 최고기온: 24 / 습도: 80 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 20 / 최고기온: 24 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐리고 비 / 최저온도: 20 / 최고기온: 24 / 습도: 80 %
2021-07-08 00:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 24 / 습도: 90 %
2021-07-08 12:00 / 날씨: 흐리고 비 / 최저온도: 21 / 최고기온: 24 / 습도: 80 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 20 / 최고기온: 24 / 습도: 80 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 20 / 최고기온: 24 / 습도: 70 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 20 / 최고기온: 25 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 25 / 습도: 40 %
2021-07-12 00:00 / 날씨: 흐림 / 최저온도: 21 / 최고기온: 25 / 습도: 40 %
제주 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 28 / 습도: 90 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 25 / 최고기온: 30 / 습도: 90 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 25 / 최고기온: 30 / 습도: 70 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 26 / 최고기온: 31 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐림 / 최저온도: 26 / 최고기온: 31 / 습도: 40 %
2021-07-08 00:00 / 날씨: 흐림 / 최저온도: 25 / 최고기온: 30 / 습도: 40 %
2021-07-08 12:00 / 날씨: 흐림 / 최저온도: 25 / 최고기온: 30 / 습도: 40 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 25 / 최고기온: 30 / 습도: 90 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 25 / 최고기온: 30 / 습도: 80 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 25 / 최고기온: 29 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 25 / 최고기온: 30 / 습도: 40 %
2021-07-12 00:00 / 날씨: 구름많음 / 최저온도: 24 / 최고기온: 30 / 습도: 30 %
서귀포 지역 날씨========
2021-07-05 00:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 26 / 습도: 90 %
2021-07-05 12:00 / 날씨: 흐리고 비 / 최저온도: 23 / 최고기온: 26 / 습도: 90 %
2021-07-06 00:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 27 / 습도: 90 %
2021-07-06 12:00 / 날씨: 흐리고 비 / 최저온도: 24 / 최고기온: 27 / 습도: 70 %
2021-07-07 00:00 / 날씨: 흐리고 비 / 최저온도: 25 / 최고기온: 28 / 습도: 80 %
2021-07-07 12:00 / 날씨: 흐림 / 최저온도: 25 / 최고기온: 28 / 습도: 40 %
2021-07-08 00:00 / 날씨: 흐림 / 최저온도: 25 / 최고기온: 28 / 습도: 40 %
2021-07-08 12:00 / 날씨: 흐림 / 최저온도: 25 / 최고기온: 28 / 습도: 40 %
2021-07-09 00:00 / 날씨: 흐리고 비 / 최저온도: 25 / 최고기온: 28 / 습도: 90 %
2021-07-09 12:00 / 날씨: 흐리고 비 / 최저온도: 25 / 최고기온: 28 / 습도: 80 %
2021-07-10 00:00 / 날씨: 흐리고 비 / 최저온도: 25 / 최고기온: 28 / 습도: 80 %
2021-07-11 00:00 / 날씨: 흐림 / 최저온도: 25 / 최고기온: 27 / 습도: 40 %
2021-07-12 00:00 / 날씨: 구름많음 / 최저온도: 25 / 최고기온: 28 / 습도: 30 %
3. json
- 다루기가 더 쉽다(? 많이 접해봐야 체감될듯)
- “속성이름” : 값 조합들이 여러개 있음
- 멤버변수는 ““으로 묶어줌
- 문자열은 ““으로 묶어줌(나머지 타입들은 필요없음)
- 값을 {}로 묶어 그 안에 객체/배열 등을 넣어줄 수 있음 (ex. “속성1” : {객체})
- 객체안엔 또 다시 ‘“속성명” : 값’ 조합들이 여러개 들어가 있음
# json을 읽기 위한 라이브러리 호출
import json
# 간단한 json
j = '[{"id":"aaa", "pwd":"111"},{"id":"bbb", "pwd":"222"}]'#json 데이터(객체 2개짜리 리스트)
items = json.loads(j) # json으로 해당 html을 encoding. items는 배열
for item in items: # items 배열에서 item을 하나씩 꺼내온다.
print(item['id'], ':', item['pwd'])
aaa : 111
bbb : 222
# 속성값으로 또 다른 객체 or 리스트도 가질 수 있다.
j = '['
j += '{"info": {"id":"aaa", "pwd":"111"}, "colors":["red", "blue", "yellow"]},'
j += '{"info": {"id":"bbb", "pwd":"222"}, "colors":["red2", "blue2", "yellow2"]}'
j += ']'
items = json.loads(j)
# 각 요소에 접근하는 방법에 주목
for item in items:
print(item['info']['id'], ':', item['colors'][1])
aaa : blue
bbb : blue2
# 각 요소에 접근하는 방법 2
for item in items:
info = item['info']
arr = item['colors']
print(info['id'], ' / ', info['pwd'])
for a in arr:
print(a, end='\t')
print()
aaa / 111
red blue yellow
bbb / 222
red2 blue2 yellow2
html = requests.get('https://api.github.com/repositories').text
items = json.loads(html) # json으로 해당 html을 encoding
for item in items:
print('id:', item['id'], ' / ', 'name:', item['name'], ' / ', 'login:', item['owner']['login'])
id: 1 / name: grit / login: mojombo
id: 26 / name: merb-core / login: wycats
id: 27 / name: rubinius / login: rubinius
id: 28 / name: god / login: mojombo
id: 29 / name: jsawesome / login: vanpelt
id: 31 / name: jspec / login: wycats
id: 35 / name: exception_logger / login: defunkt
id: 36 / name: ambition / login: defunkt
id: 42 / name: restful-authentication / login: technoweenie
id: 43 / name: attachment_fu / login: technoweenie
id: 48 / name: microsis / login: caged
id: 52 / name: s3 / login: anotherjesse
id: 53 / name: taboo / login: anotherjesse
id: 54 / name: foxtracs / login: anotherjesse
id: 56 / name: fotomatic / login: anotherjesse
id: 61 / name: glowstick / login: mojombo
id: 63 / name: starling / login: defunkt
id: 65 / name: merb-more / login: wycats
id: 68 / name: thin / login: macournoyer
id: 71 / name: resource_controller / login: jamesgolick
id: 73 / name: markaby / login: jamesgolick
id: 74 / name: enum_field / login: jamesgolick
id: 75 / name: subtlety / login: defunkt
id: 92 / name: zippy / login: defunkt
id: 93 / name: cache_fu / login: defunkt
id: 95 / name: phosphor / login: KirinDave
id: 98 / name: sinatra / login: bmizerany
id: 102 / name: gsa-prototype / login: jnewland
id: 105 / name: duplikate / login: technoweenie
id: 118 / name: lazy_record / login: jnewland
id: 119 / name: gsa-feeds / login: jnewland
id: 120 / name: votigoto / login: jnewland
id: 127 / name: mofo / login: defunkt
id: 129 / name: xhtmlize / login: jnewland
id: 130 / name: ruby-git / login: ruby-git
id: 131 / name: bmhsearch / login: ezmobius
id: 137 / name: mofo / login: uggedal
id: 139 / name: simply_versioned / login: mmower
id: 140 / name: gchart / login: abhay
id: 141 / name: schemr / login: benburkert
id: 142 / name: calais / login: abhay
id: 144 / name: chronic / login: mojombo
id: 165 / name: git-wiki / login: sr
id: 177 / name: signal-wiki / login: queso
id: 179 / name: ruby-on-rails-tmbundle / login: drnic
id: 185 / name: low-pro-for-jquery / login: danwrong
id: 186 / name: merb-core / login: wayneeseguin
id: 190 / name: dst / login: sr
id: 191 / name: yaws / login: mojombo
id: 192 / name: yaws / login: KirinDave
id: 193 / name: tasks / login: sr
id: 195 / name: ruby-on-rails-tmbundle / login: mattetti
id: 199 / name: amazon-ec2 / login: grempe
id: 203 / name: merblogger / login: wayneeseguin
id: 204 / name: merbtastic / login: wayneeseguin
id: 205 / name: alogr / login: wayneeseguin
id: 206 / name: autozest / login: wayneeseguin
id: 207 / name: rnginx / login: wayneeseguin
id: 208 / name: sequel / login: wayneeseguin
id: 211 / name: simply_versioned / login: bmizerany
id: 212 / name: switchpipe / login: peterc
id: 213 / name: arc / login: hornbeck
id: 217 / name: ebay4r / login: up_the_irons
id: 218 / name: merb-plugins / login: wycats
id: 220 / name: ram / login: up_the_irons
id: 230 / name: ambitious_activeldap / login: defunkt
id: 232 / name: fitter_happier / login: atmos
id: 237 / name: oebfare / login: brosner
id: 245 / name: credit_card_tools / login: up_the_irons
id: 248 / name: rorem / login: jnicklas
id: 249 / name: braid / login: cristibalan
id: 251 / name: uploadcolumn / login: jnicklas
id: 252 / name: ruby-on-rails-tmbundle / login: simonjefford
id: 256 / name: rack-mirror / login: leahneukirchen
id: 257 / name: coset-mirror / login: leahneukirchen
id: 267 / name: javascript-unittest-tmbundle / login: drnic
id: 273 / name: eycap / login: engineyard
id: 279 / name: gitsum / login: leahneukirchen
id: 293 / name: sequel-model / login: wayneeseguin
id: 305 / name: god / login: kevinclark
id: 307 / name: blerb-core / login: hornbeck
id: 312 / name: django-mptt / login: brosner
id: 314 / name: bus-scheme / login: technomancy
id: 319 / name: javascript-bits / login: caged
id: 320 / name: groomlake / login: caged
id: 322 / name: forgery / login: sevenwire
id: 324 / name: ambitious-sphinx / login: technicalpickles
id: 329 / name: soup / login: lazyatom
id: 332 / name: rails / login: josh
id: 334 / name: backpacking / login: cdcarter
id: 339 / name: capsize / login: jnewland
id: 351 / name: starling / login: bs
id: 360 / name: ape / login: sr
id: 362 / name: awesomeness / login: collectiveidea
id: 363 / name: audited / login: collectiveidea
id: 364 / name: acts_as_geocodable / login: collectiveidea
id: 365 / name: acts_as_money / login: collectiveidea
id: 367 / name: calendar_builder / login: collectiveidea
id: 368 / name: clear_empty_attributes / login: collectiveidea
id: 369 / name: css_naked_day / login: collectiveidea
pd.read_html(url)
- 해당 html의 데이터를 실시간 로드해서 <table>태그 안의 내용들을 df로 변환 후 반환
- table 태그가 여러개라면, 각 테이블은 리스트의 인덱스들로 들어감
- 주의: table이 하나 뿐이어도 리스트로 반환되므로 [0]을 붙여서 호출해야 한다.
# 실시간으로 제공되는 사이트 크롤링(실시간 로드)
# pip install lxml
# lxml: XML parser로서 주로 이용되는 패키지
# pip install html5lib
import pandas as pd
# table 태그가 여러개라면, 리스트로 반환
def get_code(name):
a = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download', index_col='회사명')[0]
code = a.loc[name, '종목코드']
code = '{:0=6d}'.format(code) # 6자리 숫자, 부족한 자릿수는 0으로 채워줌
return code
get_code('삼성전자')
'005930'
# (주의) 네이버 금융 사이트의 경우, 브라우저의 요청에만 응답하도록 사이트가 변경됨.
# 따라서, 브라우저인 '척'을 하여, 유효한 웹 요청을 만드는 작업이 필요하다.
url = 'https://finance.naver.com/item/sise_day.nhn?code=005930'
# requests에 headers를 아래와 같이 넣으면 브라우저인 것 처럼 할 수 있다(?)
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) \
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36'}
# 당당하게(?) 웹 요청을 시도한다. 성공!
html = requests.get(url, headers = headers)
html = BeautifulSoup(html.text, 'lxml')
html_table = html.select('table')
table = pd.read_html(str(html_table))
table[0].dropna()
날짜 | 종가 | 전일비 | 시가 | 고가 | 저가 | 거래량 | |
---|---|---|---|---|---|---|---|
1 | 2021.07.02 | 80000.0 | 100.0 | 80000.0 | 80400.0 | 79900.0 | 8181692.0 |
2 | 2021.07.01 | 80100.0 | 600.0 | 80500.0 | 80600.0 | 80000.0 | 13382882.0 |
3 | 2021.06.30 | 80700.0 | 300.0 | 81100.0 | 81400.0 | 80700.0 | 13288643.0 |
4 | 2021.06.29 | 81000.0 | 900.0 | 81900.0 | 82100.0 | 80800.0 | 15744317.0 |
5 | 2021.06.28 | 81900.0 | 300.0 | 81700.0 | 82000.0 | 81600.0 | 11578529.0 |
9 | 2021.06.25 | 81600.0 | 400.0 | 81500.0 | 81900.0 | 81200.0 | 13481405.0 |
10 | 2021.06.24 | 81200.0 | 1100.0 | 80400.0 | 81400.0 | 80100.0 | 18771080.0 |
11 | 2021.06.23 | 80100.0 | 100.0 | 80500.0 | 80600.0 | 79900.0 | 13856548.0 |
12 | 2021.06.22 | 80000.0 | 100.0 | 80200.0 | 80300.0 | 79900.0 | 11773365.0 |
13 | 2021.06.21 | 79900.0 | 600.0 | 79700.0 | 80000.0 | 79600.0 | 16063340.0 |
def get_stock_info(code):
url = 'https://finance.naver.com/item/sise_day.nhn?code='+code
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) \
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36'}
html = requests.get(url, headers = headers)
html = BeautifulSoup(html.text, 'lxml')
html_table = html.select('table')
table = pd.read_html(str(html_table))
table = table[0].dropna()
return table
info = get_stock_info(get_code('삼성전자'))
info
날짜 | 종가 | 전일비 | 시가 | 고가 | 저가 | 거래량 | |
---|---|---|---|---|---|---|---|
1 | 2021.07.02 | 80000.0 | 100.0 | 80000.0 | 80400.0 | 79900.0 | 8181692.0 |
2 | 2021.07.01 | 80100.0 | 600.0 | 80500.0 | 80600.0 | 80000.0 | 13382882.0 |
3 | 2021.06.30 | 80700.0 | 300.0 | 81100.0 | 81400.0 | 80700.0 | 13288643.0 |
4 | 2021.06.29 | 81000.0 | 900.0 | 81900.0 | 82100.0 | 80800.0 | 15744317.0 |
5 | 2021.06.28 | 81900.0 | 300.0 | 81700.0 | 82000.0 | 81600.0 | 11578529.0 |
9 | 2021.06.25 | 81600.0 | 400.0 | 81500.0 | 81900.0 | 81200.0 | 13481405.0 |
10 | 2021.06.24 | 81200.0 | 1100.0 | 80400.0 | 81400.0 | 80100.0 | 18771080.0 |
11 | 2021.06.23 | 80100.0 | 100.0 | 80500.0 | 80600.0 | 79900.0 | 13856548.0 |
12 | 2021.06.22 | 80000.0 | 100.0 | 80200.0 | 80300.0 | 79900.0 | 11773365.0 |
13 | 2021.06.21 | 79900.0 | 600.0 | 79700.0 | 80000.0 | 79600.0 | 16063340.0 |
Leave a comment