beautifulsoup 모듈 - 02.beautifulsoup 모듈 사용하기

학습목표

  1. beautifulsoup 모듈 사용하기
  2. id, class 속성으로 tag 찾기
  3. CSS를 이용하여 tag 찾기
  4. 속성 값으로 tag 찾기
  5. 정규표현식으로 tag 찾기
  6. 개발자도구를 이용하여 동적으로 로딩되는 데이터 추출하기
import requests
from bs4 import BeautifulSoup

다음 뉴스 데이터 추출

  • 뉴스기사에서 제목, 작성자, 작성일 , 댓글 개수 추출
  • 뉴스링크
  • tag를 추출할때는 가장 그 tag를 쉽게 특정할 수 있는 속성을 사용
  • id의 경우 원칙적으로 한 html 문서 내에서 유일

  • id, class 속성으로 tag 찾기
  • 타이틀
  • 작성자, 작성일
url = 'https://news.v.daum.net/v/20190728165812603'
resp = requests.get(url)

resp.text
'<!doctype html>\n<html lang="ko"> \n <head data-cloud-area="head"> \n  <meta charset="utf-8"> \n  <meta http-equiv="X-UA-Compatible" content="IE=edge"> \n  <style>\n            @import url(\'//t1.daumcdn.net/harmony_static/cloud/page/3e96c93f90d4df7aca693bfb2ba2ea76d2d14d92.css\');\n            @import url(\'//t1.daumcdn.net/harmony_static/cloud/2021/05/03/common.4fa0ea63845693bada8b.css\')\n        </style> \n  <style>\n            /* 다음 카페 소셜 쉐어 임시 비활성화 */\n            .list_sns li:nth-child(6) {\n                display: none;\n            }\n        </style> \n  <meta property="mccp:docId" content="NHT9NtZWBe"> \n  <meta property="og:site_name" content="다음뉴스"> \n  <meta property="og:title" content="일론머스크 &quot;테슬라에서 넷플릭스·유튜브 즐길 날 온다&quot;"> \n  <meta property="og:regDate" content="20190728165812"> \n  <meta property="og:type" content="article"> \n  <meta property="og:url" content="https://news.v.daum.net/v/NHT9NtZWBe"> \n  <meta property="og:image" content="https://img1.daumcdn.net/thumb/S1200x630/?fname=https://t1.daumcdn.net/news/201907/28/akn/20190728165813230vjsq.jpg"> \n  <meta property="og:image:width" content="1200"> \n  <meta property="og:image:height" content="630"> \n  <meta property="og:description" content="[아시아경제 이민우 기자] 일론 머스크 테슬라 최고경영자(CEO)가 자사 전기 자동차 모델에 넷플릭스와 유튜브 등 온라인동영상서비스(OTT)를 탑재할 것이라고 예고했다. 단순히 자율 주행 전기차가 단순히 주행을 위한 정보를 알려주는 것을 넘어 각종 영상 콘텐츠를 즐기는 공간으로도 확장하겠다는 전략으로 풀이된다.27일(현지시간) 더버지 등 주요 외신들에 따르"> \n  <meta property="al:android:url" content="daumapps://web?url=https%3A%2F%2Fnews.v.daum.net/v/NHT9NtZWBe"> \n  <meta property="al:android:package" content="net.daum.android.daum"> \n  <meta property="al:android:app_name" content="다음앱"> \n  <meta property="al:ios:url" content="daumapps://web?url=https%3A%2F%2Fnews.v.daum.net/v/NHT9NtZWBe"> \n  <meta property="al:ios:app_store_id" content="365494029"> \n  <meta property="al:ios:app_name" content="다음앱"> \n  <meta property="twitter:card" content="summary_large_image"> \n  <meta property="twitter:app:url:googleplay" content="daumapps://web?url=https%3A%2F%2Fnews.v.daum.net/v/NHT9NtZWBe"> \n  <meta property="twitter:app:id:googleplay" content="net.daum.android.daum"> \n  <meta property="twitter:app:name:googleplay" content="다음앱"> \n  <meta property="twitter:app:country" content="KR"> \n  <meta property="twitter:app:url:iphone" content="daumapps://web?url=https%3A%2F%2Fnews.v.daum.net/v/NHT9NtZWBe"> \n  <meta property="twitter:app:id:iphone" content="365494029"> \n  <meta property="twitter:app:name:iphone" content="다음앱"> \n  <meta property="twitter:app:url:ipad" content="daumapps://web?url=https%3A%2F%2Fnews.v.daum.net/v/NHT9NtZWBe"> \n  <meta property="twitter:app:id:ipad" content="365494029"> \n  <meta property="twitter:app:name:ipad" content="다음앱"> \n  <meta name="referrer" content="always"> \n  <title>일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</title> \n  <link rel="shortcut icon" href="//m2.daumcdn.net/img-media/2010ci/Daum_favicon.ico"> \n </head> \n <body class="">      \n  <div id="kakaoIndex"> <a href="#kakaoBody">본문 바로가기</a> <a href="#kakaoGnb">메뉴 바로가기</a> \n  </div> \n  <div id="kakaoWrap" class="newsview_media"> \n   <div id="wrapMinidaum"></div> \n   <div id="kakaoHead" role="banner" data-cloud-area="header"> \n    <div class="head_media" data-cloud="pc_header_gnb"> \n     <h1> <a href="https://www.daum.net" class="link_daum"> <img src="//t1.daumcdn.net/media/news/news2016/retina/logo_daum.jpg" width="45" height="19" class="thumb_g" alt="Daum"> </a> <a href="//news.daum.net" id="kakaoServiceLogo"><span class="ir_wa">뉴스</span></a> </h1> <strong class="screen_out">관련서비스</strong> \n     <ul id="kakaoRelServices"> \n      <li><a href="https://entertain.daum.net/" class="link_services link_services1"><span class="ir_wa">연예</span></a></li> \n      <li><a href="https://sports.daum.net/" class="link_services link_services2"><span class="ir_wa">스포츠</span></a></li> \n     </ul> \n     <h2 class="screen_out">검색</h2> \n     <div class="search_news" id="search_news"> \n      <form id="kakaoSearch" name="kakaoSearch" action="https://search.daum.net/search" method="get"> \n       <fieldset class="fld_inside"> <legend class="screen_out">검색어 입력폼</legend> \n        <div class="box_searchbar"> <label for="qVal" class="lab_search">통합검색</label> \n         <input type="hidden" name="nil_profile" value="search"> \n         <input type="hidden" name="nil_src" value="media"> \n         <input type="hidden" name="DA" value="23A"> \n         <input type="hidden" name="rtmaxcoll" value="NNS"> \n         <input type="text" class="tf_keyword" id="qVal" name="q" value="" title="검색어 입력" autocomplete="off" spellcheck="false"> <button id="kakaoBtnSearch" class="btn_search" type="submit"><span class="ir_wa">검색</span></button> \n        </div> \n       </fieldset> \n       <div id="wrap_suggestBox" class="wrap_suggestBox"> \n        <div id="suggestBox" class="suggestBox box_sub"> \n         <div class="baseBox bg" style="display: none"></div> \n        </div> \n       </div> \n      </form> \n     </div> \n    </div> \n    <div id="kakaoGnb" role="navigation" data-cloud="pc_header_gnb"> \n     <div class="inner_gnb"> \n      <h2 class="screen_out">뉴스 메인메뉴</h2> \n      <ul class="gnb_comm" data-category="digital"> \n       <li class="home"><a href="//news.daum.net/" class="link_gnb link_gnb1"><span class="ir_wa">홈</span><span class="bar_gnb"><span class="inner_bar"></span></span></a></li> \n       <li class="society"><a href="//news.daum.net/society/" class="link_gnb link_gnb2"><span class="ir_wa">사회</span><span class="bar_gnb"><span class="inner_bar"></span></span></a></li> \n       <li class="politics"><a href="//news.daum.net/politics/" class="link_gnb link_gnb3"><span class="ir_wa">정치</span><span class="bar_gnb"><span class="inner_bar"></span></span></a></li> \n       <li class="economic"><a href="//news.daum.net/economic/" class="link_gnb link_gnb4"><span class="ir_wa">경제</span><span class="bar_gnb"><span class="inner_bar"></span></span></a></li> \n       <li class="foreign"><a href="//news.daum.net/foreign/" class="link_gnb link_gnb5"><span class="ir_wa">국제</span><span class="bar_gnb"><span class="inner_bar"></span></span></a></li> \n       <li class="culture"><a href="//news.daum.net/culture/" class="link_gnb link_gnb6"><span class="ir_wa">문화</span><span class="bar_gnb"><span class="inner_bar"></span></span></a></li> \n       <li class="digital"><a href="//news.daum.net/digital/" class="link_gnb link_gnb7"><span class="ir_wa">IT</span><span class="bar_gnb"><span class="inner_bar"></span></span></a></li> \n       <li class="popular"><a href="//news.daum.net/ranking/popular" class="link_gnb link_gnb8"><span class="ir_wa">랭킹</span><span class="bar_gnb"><span class="inner_bar"></span></span></a></li> \n       <li class="series editorial"><a href="//news.daum.net/series" class="link_gnb link_gnb9"><span class="ir_wa">연재</span><span class="bar_gnb"><span class="inner_bar"></span></span></a></li> \n       <li class="photo"><a href="//news.daum.net/photo" class="link_gnb link_gnb10"><span class="ir_wa">포토</span><span class="bar_gnb"><span class="inner_bar"></span></span></a></li> \n       <li class="tv"><a href="//news.daum.net/tv" class="link_gnb link_gnb11"><span class="ir_wa">TV</span><span class="bar_gnb"><span class="inner_bar"></span></span></a></li> \n      </ul> \n      <div class="gnb_etc"> \n       <ul class="gnb_with"> \n        <li><a href="//news.daum.net/1boon" class="link_gnb link_gnb1"><span class="ir_wa">1boon</span></a></li> \n        <li><a href="//gallery.v.daum.net/p/home" class="link_gnb link_gnb2"><span class="ir_wa">갤러리</span><span class="bar_gnb"><span class="inner_bar"></span></span></a></li> \n       </ul>  \n       <div class="gnb_weather"> <strong class="screen_out">날씨 정보</strong> \n        <div id="gnb_weather"> \n         <ul class="list_weather" data-nightyn="N"></ul> \n        </div> \n       </div> \n      </div> \n     </div> \n    </div> \n    <div id="barProgress" class="bar_progress" data-cloud="pc_header_gnb"></div>          \n   </div> \n   <div id="dummyKakaoGnb" style="height:137px; display:none;"></div> \n   <hr class="hide"> \n   <div id="kakaoContent" class="cont_view" role="main"> \n    <h2 id="kakaoBody" class="screen_out">IT</h2> \n    <div id="cSub" data-cloud-area="title"> \n     <div class="head_view" data-cloud="pc_article_title_and_util"> <em class="info_cp"> <a href="https://www.asiae.co.kr" class="link_cp" target="_blank"> <img src="https://t1.daumcdn.net/media/news/news2016/cp/cp_akn.gif" class="thumb_g" alt="아시아경제"> </a> </em> \n      <h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3> <span class="info_view"> <span class="txt_info">이민우</span> <span class="txt_info">입력 <span class="num_date">2019. 07. 28. 16:58</span></span> <button id="alexCounter" class="emph_g2 link_cmt">댓글 <span class="alex-count-area">0</span>개</button> </span> \n      <div class="util_view"> \n       <h4 class="screen_out">기사 도구 모음</h4>  \n       <div class="btn_util util_summary"> <button type="button" class="btn_summary" aria-expanded="false"><span class="ico_newsview">자동요약</span></button> \n        <div class="wrap_setlayer"> \n         <div class="layer_util layer_summary"> \n          <p>일론 머스크 테슬라 최고경영자(CEO)가 자사 전기 자동차 모델에 넷플릭스와 유튜브 등 온라인동영상서비스(OTT)를 탑재할 것이라고 예고했다.</p>\n          <p>단순히 자율 주행 전기차가 단순히 주행을 위한 정보를 알려주는 것을 넘어 각종 영상 콘텐츠를 즐기는 공간으로도 확장하겠다는 전략으로 풀이된다.</p>\n          <p>테슬라 측은 규제당국이 자율주행에 대해 완전히 승인하면 차량이 움직일 때에도 승객이 동영상을 즐길 수 있을 것이라고 설명했다.</p> <span class="info_summary"><span class="ico_newsview"></span>기사 제목과 주요 문장을 기반으로 자동요약한 결과입니다. 전체 맥락을 이해하기 위해서는 본문 보기를 권장합니다.</span> \n         </div> \n        </div> \n       </div>  \n       <div class="btn_util tts_btn"> <button type="button" class="btn_set btn_tts" aria-expanded="false"> <span class="ico_newsview ico_speak">음성 기사 듣기</span> </button> \n        <div class="wrap_setlayer"> \n         <div class="layer_util layer_set layer_tts"> <strong class="screen_out">음성 기사 옵션 조절 레이어</strong> \n          <ul class="list_set list_tts"> \n           <li> <input type="radio" id="ttsGenderMale" name="ttsGender" class="screen_out" value="Male"> <label class="lab_set" for="ttsGenderMale"><span class="ico_newsview"></span>남성</label> </li> \n           <li> <input type="radio" id="ttsGenderFemale" name="ttsGender" class="screen_out" value="Female"> <label class="lab_set" for="ttsGenderFemale"><span class="ico_newsview"></span>여성</label> </li> \n          </ul> \n          <ul class="list_set list_tts list_ttsspeed"> \n           <li> <input type="radio" id="ttsSpeedSlow" name="ttsSpeed" class="screen_out" value="slow"> <label class="lab_set" for="ttsSpeedSlow"><span class="ico_newsview"></span>느림</label> </li> \n           <li> <input type="radio" id="ttsSpeedNormal" name="ttsSpeed" class="screen_out" value="normal"> <label class="lab_set" for="ttsSpeedNormal"><span class="ico_newsview"></span>보통</label> </li> \n           <li> <input type="radio" id="ttsSpeedFast" name="ttsSpeed" class="screen_out" value="fast"> <label class="lab_set" for="ttsSpeedFast"><span class="ico_newsview"></span>빠름</label> </li> \n          </ul> \n         </div> \n        </div> \n        <audio style="display:none" preload="none" id="ttsPlayer"></audio> \n       </div>  \n       <div class="btn_util translate_btn"> <button type="button" class="btn_set btn_translate #util #translate #set" aria-expanded="false"><span class="ico_newsview">번역 설정</span></button> \n        <div class="wrap_translatelayer"> \n         <div class="layer_util layer_translate"> <strong class="tit_translate">번역<span class="ico_newsview">beta</span> </strong> \n          <p class="desc_translate txt_newsview">Translated by <a href="https://kakao.ai/" target="_blank" class="link_kakaoi #util #translate #kakaoi_link">kakao i</a></p> <strong class="screen_out">번역할 언어 선택</strong> \n          <ul class="list_lang"> \n           <li> <button class="btn_lang btn_en #util #translate #lang_en" name="en"> <span class="ico_newsview ico_flag"></span> <strong class="ico_newsview tit_lang">English</strong> </button> </li> \n           <li> <button type="button" class="btn_lang btn_ch #util #translate #lang_cn" name="cn"> <span class="ico_newsview ico_flag"></span> <strong class="ico_newsview tit_lang">简体中文</strong> </button> </li> \n           <li> <button type="button" class="btn_lang btn_jp #util #translate #lang_jp" name="jp"> <span class="ico_newsview ico_flag"></span> <strong class="ico_newsview tit_lang">日本語</strong> </button> </li> \n           <li> <button type="button" class="btn_lang btn_ind #util #translate #lang_id" name="id"> <span class="ico_newsview ico_flag"></span> <strong class="ico_newsview tit_lang">Bahasa Indonesia</strong> </button> </li> \n           <li> <button type="button" class="btn_lang btn_viet #util #translate #lang_vi" name="vi"> <span class="ico_newsview ico_flag"></span> <strong class="ico_newsview tit_lang">tiếng Việt</strong> </button> </li> \n           <li> <button type="button" class="btn_lang btn_ko #util #translate #lang_kr" name="kr"> <span class="ico_newsview ico_flag"></span> <strong class="ico_newsview tit_lang">한국어</strong> </button> </li> \n          </ul> \n         </div> \n        </div> \n       </div>  \n       <div class="btn_util share_btn"> <button id="rSocialShareButton" class="btn_set btn_share" aria-expanded="false"> <span class="ico_newsview">공유</span> </button> \n        <div id="rSocialShareLayerContainer"></div>  \n       </div>  \n       <div class="btn_util font_btn"> <button type="button" class="btn_set btn_font" aria-expanded="false"> <span class="ico_newsview ico_font">글씨크기 조절하기</span> </button> \n        <div class="wrap_setlayer"> \n         <div class="layer_util layer_set layer_font"> <strong class="screen_out">글자 크기 조절 레이어</strong> \n          <ul class="list_set list_font"> \n           <li> <input type="radio" id="inpFont17" name="inpFont" class="screen_out" value="17"> <label class="lab_set lab_size0" for="inpFont17"> <span class="ico_newsview"></span> <span aria-hidden="true">가나다라마바사</span> <span class="screen_out">매우 작은 폰트</span> </label> </li> \n           <li> <input type="radio" id="inpFont18" name="inpFont" class="screen_out" value="18"> <label class="lab_set lab_size1" for="inpFont18"> <span class="ico_newsview"></span> <span aria-hidden="true">가나다라마바사</span> <span class="screen_out">작은 폰트</span> </label> </li> \n           <li> <input type="radio" id="inpFont19" name="inpFont" class="screen_out" value="19"> <label class="lab_set lab_size2" for="inpFont19"> <span class="ico_newsview"></span> <span aria-hidden="true">가나다라마바사</span> <span class="screen_out">보통 폰트</span> </label> </li> \n           <li> <input type="radio" id="inpFont20" name="inpFont" class="screen_out" value="20"> <label class="lab_set lab_size3" for="inpFont20"> <span class="ico_newsview"></span> <span aria-hidden="true">가나다라마바사</span> <span class="screen_out">큰 폰트</span> </label> </li> \n           <li> <input type="radio" id="inpFont21" name="inpFont" class="screen_out" value="21"> <label class="lab_set lab_size4" for="inpFont21"> <span class="ico_newsview"></span> <span aria-hidden="true">가나다라마바사</span> <span class="screen_out">매우 큰 폰트</span> </label> </li> \n          </ul> \n         </div> \n        </div> \n       </div>  \n       <div class="btn_util"> <button type="button" class="btn_print"><span class="ico_newsview">인쇄하기 새창열림</span></button> \n       </div> \n      </div> \n     </div>               \n    </div> \n    <div id="cMain"> \n     <div id="mArticle"> \n      <div data-cloud-area="article">   \n       <div id="translateNotice" class="status_view" style="display:none;" data-cloud="pc_article_body"> <span class="notice_lang notice_lang_en" style="display:none;">The copyright belongs to the original writer of the content, and there may be errors in machine translation results.</span> <span class="notice_lang notice_lang_cn" style="display:none;">版权归内容原作者所有。机器翻译结果可能存在错误。</span> <span class="notice_lang notice_lang_jp" style="display:none;">原文の著作権は原著著作者にあり、機械翻訳の結果にエラーが含まれることがあります。</span> <span class="notice_lang notice_lang_id" style="display:none;">Hak cipta milik penulis asli dari konten, dan mungkin ditemukan kesalahan dalam hasil terjemahan mesin.</span> <span class="notice_lang notice_lang_vi" style="display:none;">Bản quyền thuộc về tác giả gốc của nội dung và có thể có lỗi trong kết quả dịch bằng máy.</span> \n       </div>  \n       <div class="news_view" style="font-size:17px" data-cloud="pc_article_body"> <strong class="summary_view" data-translation="true"> "주행 중에도 넷플릭스·유튜브 감상 가능할 것"<br>자율주행 아직까지 안전 우려 남아..실현 시기는 미지수 </strong> \n        <div id="harmonyContainer" class="article_view" data-translation-body="true"> \n         <section dmcf-sid="NkBWHdyrlY">\n          <figure class="figure_frm origin_fig" dmcf-pid="N7s2biXYTL" dmcf-ptype="figure">\n           <p class="link_figure"><img alt="일론 머스크 테슬라 최고경영자(CEO) [이미지출처=로이터연합뉴스]" class="thumb_g_article" data-org-src="https://t1.daumcdn.net/news/201907/28/akn/20190728165813230vjsq.jpg" data-org-width="550" dmcf-mid="NBMY3ZZhN4" dmcf-mtype="image" height="auto" src="https://img1.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/201907/28/akn/20190728165813230vjsq.jpg" width="658"></p>\n           <figcaption class="txt_caption default_figure">\n            일론 머스크 테슬라 최고경영자(CEO) [이미지출처=로이터연합뉴스]\n           </figcaption>\n          </figure>\n          <div dmcf-pid="NU9K9rfDgA" dmcf-ptype="general">\n           <p>[아시아경제 이민우 기자] 일론 머스크 테슬라 최고경영자(CEO)가 자사 전기 자동차 모델에 넷플릭스와 유튜브 등 온라인동영상서비스(OTT)를 탑재할 것이라고 예고했다. 단순히 자율 주행 전기차가 단순히 주행을 위한 정보를 알려주는 것을 넘어 각종 영상 콘텐츠를 즐기는 공간으로도 확장하겠다는 전략으로 풀이된다.</p>\n           <br>\n           <p>27일(현지시간) 더버지 등 주요 외신들에 따르면 머스크 CEO는 자신의 트위터를 통해 이 같은 계획을 밝혔다. 그는 "자동차가 정차했을 때 넷플릭스와 유튜브를 감상할 수 있는 기능이 조만간 추가될 것"이라며 "편안한 좌석과 서라운드 사운드 오디오를 통해 영화관과 같은 느낌을 받을 수 있을 것"이라고 강조했다.</p>\n          </div>\n          <figure class="figure_frm origin_fig" dmcf-pid="NlqQhf4JmF" dmcf-ptype="figure">\n           <p class="link_figure"><img alt="(출처=일론 머스크 트위터 계정 캡쳐)" class="thumb_g_article" data-org-src="https://t1.daumcdn.net/news/201907/28/akn/20190728165813670hwxf.png" data-org-width="550" dmcf-mid="NRhnb5SRpx" dmcf-mtype="image" height="auto" src="https://img3.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/201907/28/akn/20190728165813670hwxf.png" width="658"></p>\n           <figcaption class="txt_caption default_figure">\n            (출처=일론 머스크 트위터 계정 캡쳐)\n           </figcaption>\n          </figure>\n          <div dmcf-pid="NpkG4d9A6j" dmcf-ptype="general">\n           <p>테슬라가 이처럼 콘텐츠 방면으로 확장하려 든 것은 이번이 처음이 아니다. 지난달 세계 최대 게임쇼 E3에서는 이미 운전자가 \'폴아웃 쉘터\'라는 게임을 할 수 있을 것이라고 발표한 바 있다. 이후에도 최근 게임업체 아타리사(社)의 자동차 경주 게임 ‘폴포지션’, 슈팅게임 ‘템페스트’, ‘미사일커맨드’ 등 고전 게임을 제공하기도 했다. 운전대로 게임을 조작하는 방식으로, 차가 주차돼 있을 경우에만 즐길 수 있다.</p>\n           <br>\n           <p>이번 영상 콘텐츠는 주행 중에도 감상할 수 있도록 하는 방안을 고려하고 있다. 테슬라 측은 규제당국이 자율주행에 대해 완전히 승인하면 차량이 움직일 때에도 승객이 동영상을 즐길 수 있을 것이라고 설명했다.</p>\n           <br>\n           <p>하지만 아직까지 자율주행차의 안전에 대한 우려는 완전히 걷혀지지 않은 상황이다. 지난 2017년 차량공유 서비스 우버의 자율주행 시범차량이 보행자와 충돌한 사고가 발생한 바 있다. 게다가 당시 시험 운전자는 디즈니의 동영상 스트리밍 서비스인 \'훌루\'를 이용하고 있던 것으로 밝혀졌다.</p>\n          </div>\n          <p dmcf-pid="NUOWg8Qxyd" dmcf-ptype="general">이민우 기자 letzwin@asiae.co.kr</p>\n         </section> \n         <p data-translation="true">&lt;ⓒ경제를 보는 눈, 세계를 보는 창 아시아경제 무단전재 배포금지&gt;</p> \n        </div> \n       </div>  \n      </div> \n      <div class="foot_view" data-cloud-area="addition"> \n       <div class="emotion_wrap" data-cloud="alex_action_emotion"> \n        <div class="emotion_tit"> <strong class="tit_emotion">이 기사에 대해 어떻게 생각하시나요?</strong> \n        </div> \n        <div class="emotion_list"> \n         <div class="alex-action" data-selections="RECOMMEND,LIKE,IMPRESS,ANGRY,SAD" data-client-id="26BXAvKny5WF5Z09lr5k77Y8" data-item-key="20190728165812603" data-action-mode="REACTION" data-on-select-animation-type="EXPAND" data-message-channel="alex-action-reactions"> \n         </div> \n        </div> \n       </div>  \n       <div class="relate_series hide" data-cloud="pc_news_cluster"> <strong class="tit_series"> <em class="tag_series">연재</em> <span class="title_series"></span> </strong> \n        <ul class="list_series"></ul> <a href="#none" class="link_more">더보기</a> \n       </div>   \n       <div class="cp_view" data-cloud="pc_related_news"> \n        <div class="cp_tit"> \n         <h3 class="tit_cp">아시아경제 주요 뉴스</h3> \n         <p class="info_cp">해당 언론사로 연결됩니다.</p> \n        </div> \n        <ul class="list_relate"> \n         <li><a href="https://www.asiae.co.kr/article/2021050309184631893&amp;access=daum" title="도경완, 장윤정 때문에 주식 다 빼…&quot;300만원 올랐는데&quot;" class="link_txt" target="_blank" data-type="rss">도경완, 장윤정 때문에 주식 다 빼…"300만원 올랐는데"</a></li> \n         <li><a href="https://www.asiae.co.kr/article/2021050112025228486&amp;access=daum" title="전지현, 의류 수거함에서 주웠던 그 옷…\'400만원 명품\'" class="link_txt" target="_blank" data-type="rss">전지현, 의류 수거함에서 주웠던 그 옷…\'400만원 명품\'</a></li> \n         <li><a href="https://www.asiae.co.kr/article/2021050104550364044&amp;access=daum" title="박나래, \'성희롱 논란\' 눈물의 사과…&quot;많이 반성했다&quot;" class="link_txt" target="_blank" data-type="rss">박나래, \'성희롱 논란\' 눈물의 사과…"많이 반성했다"</a></li> \n         <li><a href="https://www.asiae.co.kr/article/2021050309190637368&amp;access=daum" title="공매 입찰금액 실수로 \'0\' 하나 더 붙였다가… 3억 날린 사연" class="link_txt" target="_blank" data-type="rss">공매 입찰금액 실수로 \'0\' 하나 더 붙였다가… 3억 날린 사연</a></li> \n         <li><a href="https://www.asiae.co.kr/article/2021050311172336247&amp;access=daum" title="[속수무책 기술유출]美 첨단산업 견제에 궁지 몰린 中…韓 기술 호시탐탐" class="link_txt" target="_blank" data-type="rss">[속수무책 기술유출]美 첨단산업 견제에 궁지 몰린 中…韓 기술 호시탐탐</a></li> \n         <li><a href="https://www.asiae.co.kr/article/2021050221051670443&amp;access=daum" title="&quot;90명 한 무대&quot;… MBN \'보이스킹\' 스태프 확진→출연자 전원 검사 \'비상\'" class="link_txt" target="_blank" data-type="rss">"90명 한 무대"… MBN \'보이스킹\' 스태프 확진→출연자 전원 검사 \'비상\'</a></li> \n         <li><a href="https://www.asiae.co.kr/article/2021050111335311247&amp;access=daum" title="&quot;니 X이 뭔데&quot;… &quot;도와드릴까요&quot; 묻는 청소원 머리 내리친 남성 징역형" class="link_txt" target="_blank" data-type="rss">"니 X이 뭔데"… "도와드릴까요" 묻는 청소원 머리 내리친 남성 징역형</a></li> \n         <li><a href="https://www.asiae.co.kr/article/2021043014243540488&amp;access=daum" title="6년간 수십억원 모바일상품권 몰래 발행한 직원 징역 3년" class="link_txt" target="_blank" data-type="rss">6년간 수십억원 모바일상품권 몰래 발행한 직원 징역 3년</a></li> \n         <li><a href="https://www.asiae.co.kr/article/2021050109270368569&amp;access=daum" title="바뀐 \'분묘기지권\' 판례… &quot;남의 땅에 조상묘, 사용료 내라&quot;" class="link_txt" target="_blank" data-type="rss">바뀐 \'분묘기지권\' 판례… "남의 땅에 조상묘, 사용료 내라"</a></li> \n         <li><a href="https://www.asiae.co.kr/article/2021042811411792075&amp;access=daum" title="14억 중국의 참담한 현실…\'인구대국\' 자리바꿈 초읽기" class="link_txt" target="_blank" data-type="rss">14억 중국의 참담한 현실…\'인구대국\' 자리바꿈 초읽기</a></li> \n        </ul> \n       </div> \n       <div id="alex-scroll-area" data-cloud="pc_article_bottom_ad"></div> \n       <ins class="kakao_ad_area recomm_ad" style="display:block; width: 658px; text-decoration: none; min-width: 658px;" data-ad-unit="DAN-1jezdswwiit7q" data-ad-width="658" data-ad-height="90" data-ad-onfail="cmRenderFailCallBack" data-cloud="pc_article_bottom_ad"> </ins>  \n       <div class="cmt_news cmt_view" data-cloud="pc_comment"> \n        <div id="newsviewNotice" class="news_notice"></div>  \n        <div id="alex-area" class="alex-area" data-base-url="//comment.daum.net" data-post-id="@20190728165812603" data-client-id="26BXAvKny5WF5Z09lr5k77Y8" data-kakao-appkey="9076ba452fea1a434141d6b6a2c11a3c" data-initial-limit="3" data-page-limit="10" data-sort="P" data-use-my="true" data-max-length="300" data-use-reply="true" data-use-official="true" data-use-emoticon="true" data-use-social-share="true" data-use-attachment="false" data-is-mobile="false" data-show-mask-alert="true" data-use-live-comment-mode="notify" data-use-fold="true" data-use-skin="newsView" data-use-safebot="true"> \n        </div>    \n       </div> \n      </div> \n     </div> \n     <div id="mAside" data-cloud-area="aside"> \n      <ins style="display:block;width:250px;height:250px;" class="kakao_ad_area aside_g aside_ad" data-ad-unit="05d24" data-ad-type="D" data-ad-width="250" data-ad-height="250" data-cloud="pc_aside_top_ad"> </ins> \n      <div class="aside_g aside_popular hide" data-cloud="pc_popular_news"> \n       <h3 class="txt_newsview">많이본 뉴스</h3> \n       <ul class="tab_aside tab_media"> \n        <li class="on"> <a href="#none" class="link_tab link_tab2">뉴스</a> </li> \n        <li class=""> <a href="#none" class="link_tab link_tab3">연예</a> </li> \n        <li class=""> <a href="#none" class="link_tab link_tab4">스포츠</a> </li> \n       </ul> \n      </div>  \n      <div class="aside_g aside_phototv hide" data-cloud="pc_news_photo_tv"> \n       <h3 class="txt_newsview">포토&amp;TV</h3> \n       <div class="cont_aside"> \n        <ul class="list_phototv"></ul> \n       </div> \n      </div>  \n      <ins style="display:block;width:250px;height:250px;" class="kakao_ad_area aside_g aside_ad" data-ad-unit="0QH44" data-ad-type="D" data-ad-width="250" data-ad-height="250" data-cloud="pc_aside_bottom_ad"> </ins> \n     </div> \n    </div> \n    <div id="cEtc"> \n     <div class="realtime_view"> \n      <div class="inner_realtime"> \n       <div data-cloud-area="etc"> \n        <div class="realtime_news" data-cloud="pc_realtime_news"> \n         <h3 class="txt_newsview">이 시각 추천뉴스</h3> \n         <ul class="list_realtime"> \n          <li class="item_main item_realtime_news"></li> \n          <li class="item_main item_realtime_news"></li> \n          <li class="item_realtime_news"></li> \n          <li class="item_realtime_news"></li> \n          <li class="item_realtime_news"></li> \n          <li class="item_realtime_news"></li> \n          <li class="item_realtime_news"></li> \n          <li class="item_realtime_news"></li> \n          <li class="item_realtime_news"></li> \n          <li class="item_realtime_news"></li> \n          <li class="item_realtime_news"></li> \n          <li class="item_realtime_news"></li> \n         </ul> \n        </div>  \n       </div> \n       <div class="realtime_aside" id="realtime_aside" data-cloud-area="etc-aside"> \n        <ins class="kakao_ad_area etc_bottom_ad" style="display: block; width: 100%;" data-ad-unit="DAN-kQxraZPBvpl52CWq" data-ad-width="250" data-ad-height="250" data-ad-onfail="onFailEtcBottomAd" data-cloud="pc_etc_bottom_ad"> </ins>  \n       </div> \n      </div> \n     </div> \n     <div data-cloud-area="etc-addition"> \n     </div> \n    </div> \n   </div> \n   <hr class="hide"> \n   <div class="footer_comm" id="kakaoFoot" role="contentinfo" data-cloud-area="footer"> \n    <div class="inner_foot" data-cloud="pc_footer"> \n     <div class="direct_link"> \n      <h2 class="tit_direct">바로가기</h2> \n      <div class="item_bundle"> <a class="link_txt" href="https://news.daum.net/">뉴스홈</a> <a class="link_txt" href="https://news.daum.net/society/">사회</a> <a class="link_txt" href="https://news.daum.net/politics/">정치</a> <a class="link_txt" href="https://news.daum.net/economic/">경제</a> <a class="link_txt" href="https://news.daum.net/foreign/">국제</a> <a class="link_txt" href="https://news.daum.net/culture/">문화</a> <a class="link_txt" href="https://news.daum.net/digital/">IT</a> <a class="link_txt" href="https://news.daum.net/photo/">포토</a> <a class="link_txt" href="https://news.daum.net/tv/">TV</a> \n      </div> \n      <div class="item_bundle"> <a class="link_txt" href="https://news.daum.net/cp">언론사별 뉴스</a> \n      </div> \n      <div class="item_bundle"> <a class="link_txt" href="https://news.daum.net/newsbox">배열이력</a> \n      </div> \n      <div class="item_bundle"> <a class="link_txt" href="https://news.daum.net/breakingnews">전체뉴스</a> <a class="link_txt" href="https://news.daum.net/ranking/popular">랭킹</a> <a class="link_txt" href="https://news.daum.net/series">연재</a> <a class="link_txt" href="https://news.daum.net/1boon">1boon</a> \n      </div> <button class="btn_fold" type="button"><span class="ico_news">바로가기 링크 더보기/접기</span></button> \n     </div> \n     <h2 class="screen_out">서비스 이용정보</h2> \n     <div class="footer_link"> <a class="link_info" href="https://news.daum.net/info/intro">다음뉴스 소개</a> <span class="txt_dot"> ・ </span> <a class="link_info" href="https://news.daum.net/notice">공지사항</a> <span class="txt_dot"> ・ </span> <a class="link_info" href="https://news.daum.net/info/bbsrule">게시물 운영원칙</a> <span class="txt_dot"> ・ </span> <a class="link_info" href="https://policy.daum.net/info/info">서비스 약관/정책</a> <span class="txt_dot"> ・ </span> <a class="link_info" href="https://with.kakao.com/media">뉴스제휴</a> <span class="txt_dot"> ・ </span> <a class="link_info" href="https://business.kakao.com/">비즈니스</a> <span class="txt_dot"> ・ </span> <a class="link_info" href="https://cs.daum.net/redbell/top.html">권리침해신고</a> <span class="txt_dot"> ・ </span> <a class="link_info" href="https://cs.daum.net/faq/63.html">다음뉴스 고객센터</a> \n     </div> \n     <div class="footer_link"> <a class="link_info" href="https://news.daum.net/info/newscenter24">24시간 뉴스센터</a> <span class="txt_dot"> ・ </span> <a class="link_info" href="https://news.daum.net/info/edit">서비스원칙</a> <span class="txt_dot"> ・ </span> <a class="link_info" href="https://news.daum.net/info/correct">바로잡습니다</a> <span class="txt_dot"> ・ </span> <span class="link_info">기사배열책임자 : 김희정</span> <span class="txt_dot"> ・ </span> <span class="link_info">청소년보호책임자 : 이준목</span> \n     </div> \n     <div class="info_copyright"> <strong class="info_warn">위 내용에 대한 저작권 및 법적 책임은 자료제공사 또는 <br>글쓴이에 있으며, Kakao의 입장과 다를 수 있습니다.</strong> <small class="txt_copyright">Copyright © <strong class="txt_kakao"><a href="https://www.kakaocorp.com" class="link_kakao">Kakao Corp.</a></strong> All rights reserved.</small> \n     </div> \n    </div>   \n   </div> <samp data-cloud-area="util">           </samp> \n  </div>  \n  <script src="//t1.daumcdn.net/harmony_static/cloud/2021/05/03/vendor.39958ce6937d202010c7.js"></script>\n  <script src="//t1.daumcdn.net/harmony_static/cloud/2021/05/03/common.4fa0ea63845693bada8b.js"></script>\n  <script src="//t1.daumcdn.net/kas/static/ba.min.js"></script>\n  <script src="//t1.daumcdn.net/kas/static/na.min.js"></script>\n  <script src="//m1.daumcdn.net/svc/original/U03/cssjs/userAgent/userAgent-1.0.12.min.js"></script>\n  <script>"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass(e,t,a){return t&&_defineProperties(e.prototype,t),a&&_defineProperties(e,a),e}!(function(){var a="<li>\\n <a href=\\"https://search.daum.net/search?nil_suggest=btn&amp;w=tot&amp;DA=SBC&amp;q=<%= specialRegionName %>%20날씨\\" class=\\"link_cont\\">\\n <span class=\\"ico_weather ico_weather<%= weatherIconCode %>\\"><%= specialRegionName %></span> \\n <span class=\\"txt_weather\\"><%= specialRegionName %>\\n <span class=\\"num_heat\\"><%= temperature %></span> \\n <span class=\\"txt_heat\\">℃</span>\\n </span>\\n </a>\\n </li>",t=document.querySelector(\'.gnb_weather\'),n=t.querySelector(\'ul\'),e="".concat(Conf.api.hadesRest,"/pc_weather");axios.get(e).then(function(e){var t=e.data.body.data,e=t.isNightIconYn,t=t.weatherData;n.dataset.nightyn=e,n.innerHTML=t.map(function(e){return _.template(a)(e)}).join(\'\');new s(n)}).catch(function(e){t.parentNode.removeChild(t)});var s=(function(){function t(e){_classCallCheck(this,t),this.PAUSE_TIME=4e3,this.TRANSITION_TIME=500,this.list=e,this.frameId=null,this.pause=this.pause.bind(this),this.start=this.start.bind(this),this.moveUp=this.moveUp.bind(this),this.init(),this.start(),this.list.style.marginTop=\'0px\'}return _createClass(t,[{key:"start",value:function(){this.frameId=setInterval(this.moveUp,this.PAUSE_TIME)}},{key:"pause",value:function(){clearInterval(this.frameId)}},{key:"moveUp",value:function(){var e=this.list,t=e.firstElementChild.cloneNode(!0);e.classList.add(\'slidein\'),e.style.marginTop=\'-30px\',setTimeout(function(){e.classList.remove(\'slidein\'),e.style.marginTop=\'0px\',e.removeChild(e.firstElementChild),e.appendChild(t)},this.TRANSITION_TIME)}},{key:"init",value:function(){var t=this,e=this.list;e.addEventListener(\'mouseenter\',this.pause),e.addEventListener(\'mouseleave\',this.start),e.querySelectorAll(\'a\').forEach(function(e){e.addEventListener(\'focus\',t.pause),e.addEventListener(\'blur\',t.start)})}}]),t})()})();</script>\n  <script>"use strict";!(function(){var e=-1<\'\'.indexOf(\'tv_news\')?\'tv\':\'digital\',t=document.querySelector(\'.gnb_comm\');(t=e&&t.querySelector(".".concat(e)))&&t.setAttribute(\'class\',"".concat(e," on"))})();</script>\n  <script src="https://t1.daumcdn.net/cssjs/jquery/jquery-1.9.0.min.js"></script>\n  <script src="https://search1.daumcdn.net/search/suggest_pc/suggest-1.2.16.min.js"></script>\n  <script>"use strict";!(function(){document.getElementById(\'search_news\'),new suggest.Suggest(document.getElementById("search_news"),{inputEl:\'qVal\',suggestBoxEl:\'suggestBox\',autoFocus:\'NORMAL\',suggestLimit:10,isReverse:!1,searchURL:\'https://search.daum.net/search\',APIServer:{host:\'//dapi.kakao.com/suggest/v2/pc.json\',apiType:suggest.Suggest.APITYPE.DAPISUGGEST,appkey:\'d7022f6ca2a04430ce1b97b922da58e8\',queries:{mod:\'json\',code:\'utf_in_out\'}}}).on(\'click-item\',function(){var e=document.getElementById(\'kakaoSearch\');e.querySelector("input[name=\'DA\']").value=\'23B\',e.submit()});var t=document.getElementById(\'qVal\');t.addEventListener?(t.addEventListener(\'focus\',function(e){e&&e.preventDefault(),0<=t.value.length&&t.parentNode.classList.add(\'search_on\')}),t.addEventListener(\'blur\',function(e){e&&e.preventDefault(),0===t.value.length&&t.parentNode.classList.remove(\'search_on\')})):(t.attachEvent(\'onfocus\',function(e){e&&(e.preventDefault?e.preventDefault():e.returnValue=!1),0<=t.value.length&&t.parentNode.setAttribute(\'class\',\'box_searchbar search_on\')}),t.attachEvent(\'onblur\',function(e){e&&(e.preventDefault?e.preventDefault():e.returnValue=!1),0===t.value.length&&t.parentNode.setAttribute(\'class\',\'box_searchbar\')}))})(jQuery);</script>\n  <script src="//t1.daumcdn.net/daumtop_deco/socialshare/socialshare_nocss_pc-2.4.2.js"></script>\n  <script>"use strict";!(function(){var t=document.querySelector(\'.util_summary\'),r=t.querySelector(\'.btn_summary\'),e=t.querySelectorAll(".layer_summary p"),n=!1;function i(){t.classList.remove(\'layer_open\'),r.setAttribute(\'aria-expanded\',!1)}function a(e){if(e.target===r||e.target===r.children[0])return!1;i(),window.removeEventListener(\'click\',a)}e.forEach(function(e){return e.classList.add("desc_news")}),r.addEventListener(\'click\',function(e){(n=!n)?(t.classList.add(\'layer_open\'),r.setAttribute(\'aria-expanded\',!0),window.addEventListener(\'click\',a)):i()}),r.addEventListener(\'blur\',function(e){n=!1,i()})})();</script>\n  <script>"use strict";function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_unsupportedIterableToArray(e,t)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(e,t):void 0}}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function _iterableToArrayLimit(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==s["return"]||s["return"]()}finally{if(o)throw a}}return n}}function _arrayWithHoles(e){if(Array.isArray(e))return e}!(function(){var t,e,n,r,o,a=\'VIEW_TTS\',i=\'v.daum.net\',s={slow_Male:\'http://k-v1.kakaocdn.net/dn/bTYhQf/btqw7dnmMCv/hUbVhtobk3GbFXFCegkk31/original.m4a\',normal_Male:\'http://k-v1.kakaocdn.net/dn/4CTkI/btqw7QSKJ4L/RBxJg5cqNbQyPSQIjMOUT1/original.m4a\',fast_Male:\'http://k-v1.kakaocdn.net/dn/g8O5D/btqw4ocn8Y7/tD8KH19rXvKQXYWbQ5gdr0/original.m4a\',slow_Female:\'http://k-v1.kakaocdn.net/dn/dZVpXE/btqw8AWdkJO/kiq1mIqCrBEVEX22P6YhSK/original.m4a\',normal_Female:\'http://k-v1.kakaocdn.net/dn/ETPxe/btqw6nRmjWq/Yni5zaUkvyxurIIhtFBLS1/original.m4a\',fast_Female:\'http://k-v1.kakaocdn.net/dn/03ztL/btqw7cIJy8D/D2U1Q1f3wdQOQXXUNJMljk/original.m4a\'},l=document.querySelector(\'.util_view .tts_btn\'),c=l.querySelectorAll(\'.list_tts input\'),u=l.querySelector(\'.btn_tts\'),d=l.querySelector(\'.ico_speak\'),y=l.querySelector(\'.wrap_setlayer\').querySelectorAll(\'.ico_newsview\'),f=l.querySelector(\'#ttsPlayer\');function m(){var e,t,n,r,o=(e=l.querySelector(\'input[name=ttsSpeed]:checked\').value,t=l.querySelector(\'input[name=ttsGender]:checked\').value,"".concat(e,"_").concat(t));f.setAttribute(\'src\',s[o]),n=o,Cookies.set(a,\'\',{expires:-1}),Cookies.set(a,n,{domain:i,expires:new Date(1*new Date+365*864e5)}),r=o,u.className=\'btn_set btn_tts #util #tts #p_\'+r}function p(e){\'playOptions\'==e?(m(),f.load(),f.play(),d.textContent=\'음성 기사 정지\'):\'play\'==e?(f.load(),f.play(),d.textContent=\'음성 기사 정지\'):(f[e](),d.textContent=\'음성 기사 듣기\')}function v(){clearTimeout(n),t.classList.add(\'layer_open\'),e.setAttribute(\'aria-expanded\',!0)}function _(){r||(n=setTimeout(b,100))}function b(){t.classList.remove(\'layer_open\'),e.setAttribute(\'aria-expanded\',!1)}function L(e){e?t.classList.add(\'on\'):t.classList.remove(\'on\')}function h(e,t){document.getElementById("ttsSpeed".concat(e)).checked=!0,document.getElementById("ttsGender".concat(t)).checked=!0}t=(o={layer:l,btn:u,radios:c}).layer,e=o.btn,o=o.radios,r=!(n=0),t.addEventListener(\'mouseover\',function(e){r=!0,v()}),t.addEventListener(\'mouseleave\',function(e){r=!1,_()}),e.addEventListener(\'keydown\',function(e){13===e.keyCode&&((r=!r)?v:b)()}),t.addEventListener(\'blur\',function(e){r=!1,_()}),e.addEventListener(\'click\',function(e){f.paused?(L(!0),p(\'play\')):(L(!1),p(\'pause\'))}),o.forEach(function(e){e.addEventListener(\'change\',function(e){t.classList.add(\'on\'),p(\'playOptions\')}),e.addEventListener(\'blur\',function(e){r=!1,_()}),e.addEventListener(\'focus\',function(e){r=!0,v()})}),y=(o={icons:y,radios:c}).icons,c=o.radios,y.forEach(function(e){e.addEventListener(\'mouseover\',function(e){this.classList.add(\'ico_focused\')}),e.addEventListener(\'mouseleave\',function(e){this.classList.remove(\'ico_focused\')})}),c.forEach(function(e){e.addEventListener(\'focus\',function(e){this.nextElementSibling.querySelector(\'span\').classList.add(\'ico_focused\')}),e.addEventListener(\'blur\',function(e){this.nextElementSibling.querySelector(\'span\').classList.remove(\'ico_focused\')})}),f.addEventListener(\'ended\',function(e){l.classList.remove(\'on\')}),void 0===(o=Cookies.get(a))||o.includes(\'undefined\')?h(\'Normal\',\'Male\'):(c=(y=_slicedToArray(o.split(\'_\'),2))[0],y=y[1],h(c=(o=c).charAt(0).toUpperCase()+o.slice(1),y)),m()})();</script>\n  <script>"use strict";!(function(){var n=document.createElement(\'DIV\');n.innerHTML="\\n <div id=\\"translatingLayer\\" class=\\"translate_layer\\">\\n <div class=\\"inner_translate_layer\\">\\n <div class=\\"layer_body\\">\\n <strong class=\\"tit_translate\\">\\n 번역중 <span class=\\"eng_tit\\">Now in translation</span>\\n </strong>\\n </div>\\n </div>\\n </div>\\n\\n <div id=\\"translateErrorLayer\\" class=\\"translate_layer\\">\\n <div class=\\"inner_translate_layer inner_error_layer\\">\\n <div class=\\"layer_body\\">\\n <span class=\\"ico_newsview ico_error\\"></span>\\n <strong class=\\"tit_translate\\">\\n 잠시 후 다시 시도해 주세요 <span class=\\"eng_tit\\">Please try again in a moment</span>\\n </strong>\\n </div>\\n </div>\\n </div>\\n ",document.body.querySelector("#kakaoWrap").appendChild(n)})();</script>\n  <script>"use strict";function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(e,t):void 0}}function _iterableToArray(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}!(function(){var e,t,n,r,a=document.querySelector(\'.translate_btn\'),o=a.querySelector(\'.btn_translate\'),l=a.querySelector(\'.link_kakaoi\'),s=a.querySelectorAll(\'.btn_lang\'),i=document.getElementById(\'translatingLayer\'),c=document.getElementById(\'translateErrorLayer\'),y=document.getElementById(\'kakaoWrap\');function u(){i.style.display=\'none\',c.style.display=\'none\',document.body.style.overflow=\'\'}function d(){clearTimeout(e),t.classList.add(\'layer_open\'),n.setAttribute(\'aria-expanded\',!0)}function f(){t.classList.remove(\'layer_open\'),n.setAttribute(\'aria-expanded\',!1)}function p(){r||(e=setTimeout(f,1))}function m(e){var t=e.currentTarget.name;u(),i.style.display=\'block\',document.body.style.overflow=\'hidden\';try{HarmonyTranslator.translate(\'kr\',t,_,b)}catch(e){console.error(\'번역 에러:\',e)}}function _(e){var t=document.querySelector(\'#translateNotice\'),e=e.targetLang;switch(e){case\'en\':case\'id\':y.classList.add(\'lang_type1\'),y.classList.remove(\'lang_type2\'),y.classList.remove(\'lang_type3\');break;case\'cn\':case\'jp\':y.classList.remove(\'lang_type1\'),y.classList.add(\'lang_type2\'),y.classList.remove(\'lang_type3\');break;case\'vi\':y.classList.remove(\'lang_type1\'),y.classList.remove(\'lang_type2\'),y.classList.add(\'lang_type3\');break;default:y.classList.remove(\'lang_type1\'),y.classList.remove(\'lang_type2\'),y.classList.remove(\'lang_type3\')}\'kr\'==e?(t.querySelectorAll(\'.notice_lang\').forEach(function(e){e.style.display=\'none\'}),t.style.display=\'none\'):(t.querySelectorAll(".notice_lang:not(.notice_lang_".concat(e,")")).forEach(function(e){e.style.display=\'none\'}),t.querySelector(".notice_lang.notice_lang_".concat(e)).style.display=\'block\',t.style.display=\'block\'),setTimeout(function(){u()},500)}function b(e,t){u(),c.style.display=\'block\',document.body.style.overflow=\'hidden\',setTimeout(function(){u()},2e3)}l={layer:a,btn:o,inputs:[l].concat(_toConsumableArray(s))},t=l.layer,n=l.btn,l=l.inputs,r=!1,n.addEventListener(\'click\',function(){((r=!r)?d:p)()}),t.addEventListener(\'mouseover\',function(){r=!0,d()}),t.addEventListener(\'mouseleave\',function(){r=!1,f()}),l.forEach(function(e){e.addEventListener(\'focus\',function(e){r=!0,d()}),e.addEventListener(\'blur\',function(e){r=!1,p()})}),s.forEach(function(e){e.addEventListener(\'click\',m)})})();</script>\n  <script>"use strict";!(function(){var e,t=(o=\'일론머스크 &quot;테슬라에서 넷플릭스·유튜브 즐길 날 온다&quot;\',(c=document.createElement(\'div\')).innerHTML=o,c.textContent),a=\'20190728165812603\'||\'NHT9NtZWBe\',n="".concat(location.protocol,"//").concat(location.host,"/v/").concat(a),o="http://scrap.cafe.daum.net/_dss_/scrap?folder_id=100000&source_location_code=10&target_location_code=1&data_id=".concat(a),c={shareType:\'sendScrap\',shareData:{requestUrl:n,templateId:7952,installTalk:!0,templateArgs:{\'${EncodingUrl}\':encodeURIComponent(n),\'${webUrl}\':n+\'?f=p\',\'${mobileWebUrl}\':n+\'?f=m\'}}},r=document.querySelector(\'.share_btn\'),i=document.getElementById(\'rSocialShareButton\'),a=document.getElementById(\'rSocialShareLayerContainer\'),d=new socialshareRenewal.Main(i,{moreViewContainer:a,action:\'hover\',link:n,prefix:t,service_name:\'다음뉴스\',cafe:o,kakaoAPI:{appkey:\'53e566aa17534bc816eb1b5d8f7415ee\',kakaoLinkData:c}}),s=!1;function l(){e=setTimeout(function(){s=!1,r.classList.remove(\'layer_open\'),i.setAttribute(\'aria-expanded\',!1),d.close()},100)}function u(){s=!0,m(),r.classList.add(\'layer_open\'),i.setAttribute(\'aria-expanded\',!0),d.open()}function m(){clearTimeout(e)}i.addEventListener(\'mouseenter\',u),i.addEventListener(\'mouseleave\',l),i.addEventListener(\'click\',function(e){(s?l:u)()}),a.addEventListener(\'mouseenter\',m),a.addEventListener(\'mouseleave\',l),a.querySelectorAll(\'a\').forEach(function(e){e.addEventListener(\'focus\',m),e.addEventListener(\'blur\',l)})})();</script>\n  <script>"use strict";!(function(){var e,t,n,o,i=document.querySelector(\'.news_view\'),s=document.querySelector(\'.font_btn\'),c=s.querySelector(\'.btn_font\'),r=s.querySelector(\'.list_font\'),u=r.querySelectorAll(\'input\'),a=\'GS_font_size\',l=\'v.daum.net\';function d(e){i.style.fontSize="".concat(e,"px"),document.querySelector("#inpFont".concat(e)).checked=!0,r.querySelectorAll(\'label\').forEach(function(e){return e.classList.remove(\'on\')}),r.querySelector("label[for=inpFont".concat(e,"]")).classList.add(\'on\'),e=e,Cookies.set(a,\'\',{expires:-1}),Cookies.set(a,e,{domain:l,expires:new Date(1*new Date+365*864e5)})}function f(){clearTimeout(e),t.classList.add(\'layer_open\'),n.setAttribute(\'aria-expanded\',!0)}function v(){t.classList.remove(\'layer_open\'),n.setAttribute(\'aria-expanded\',!1)}function p(){o&&(e=setTimeout(v,1))}d(Cookies.get(a)||17),u.forEach(function(e){e.addEventListener(\'change\',function(e){d(e.target.value)})}),t=(c={layer:s,btn:c,inputs:u}).layer,n=c.btn,c=c.inputs,o=!1,t.addEventListener(\'mouseover\',function(){o=!0,f()}),t.addEventListener(\'mouseleave\',function(){o=!1,v()}),c.forEach(function(e){e.addEventListener(\'focus\',f),e.addEventListener(\'blur\',p)}),n.addEventListener(\'click\',function(e){((o=!o)?f:v)()}),s={options:s.querySelectorAll(\'.ico_newsview\'),inputs:u},u=s.options,s=s.inputs,u.forEach(function(e){e.addEventListener(\'mouseover\',function(){this.classList.add(\'ico_focused\')}),e.addEventListener(\'mouseleave\',function(){this.classList.remove(\'ico_focused\')})}),s.forEach(function(e){e.addEventListener(\'focus\',function(){this.nextElementSibling.querySelector(\'span\').classList.add(\'ico_focused\')}),e.addEventListener(\'blur\',function(){this.nextElementSibling.querySelector(\'span\').classList.remove(\'ico_focused\')})})})();</script>\n  <script>"use strict";document.body.querySelector(".btn_print").parentNode.addEventListener("click",function(t){t.preventDefault(),window.open(\'https://news.v.daum.net/v/20190728165812603?s=print_news\',\'newsPrint\',\'width=750,height=550,scrollbars=yes\')});</script>\n  <script type="text/javascript" src="//comment.daum.net/js/latest/alex.action.min.js"></script>\n  <script>"use strict";!(function(){var s="20190728165812603",e="".concat(Conf.api.hadesRest,"/pc_mc2_news?cate=").concat("news","&id=").concat(s),a=\'<li class="on"> <div class="inner_box"><span class="link_txt"><%= title %></span></div> </li>\',i=\'<li> <div class="inner_box"><a href="https://news.v.daum.net/v/<%= contentId %>" class="link_txt"><%= title %></a></div> </li>\',c=\'//news.daum.net/series\',r=document.querySelector(\'.relate_series\'),o=r.querySelector(\'.title_series\'),d=r.querySelector(\'.link_more\'),l=r.querySelector(\'.list_series\');function m(e){e&&e.parentNode.removeChild(e)}axios.get(e).then(function(e){var t,n=e.data.body.data.data;_.isEmpty(n)||\'series\'!==n[0].factor.type?m(r):(t=n[0],e=t.contents,n=t._id,t=t.title,e.length<3&&l.classList.add(\'relate_series2\'),o.textContent=t,d.setAttribute(\'href\',c+\'/\'+n),l.innerHTML=e.map(function(e){var t=e.contentId,e=e.title;return t==s?_.template(a)({title:e}):_.template(i)({contentId:t,title:e})}).join(\'\'),(e=r)&&e.classList.remove(\'hide\'))}).catch(function(e){console.error("[클러스터]: 데이터를 가져오는데 실패했습니다. 에러: ",e,"에러 데이터: ",e.response.data),m(r)})})();</script>\n  <script>"use strict";function cmRenderFailCallBack(e){e.parentElement.removeChild(e)}</script>\n  <script>"use strict";document.addEventListener(\'DOMContentLoaded\',function(){var t="".concat(Conf.api.hadesRest)+"/service_notice?id="+"3393",n=document.querySelector("#newsviewNotice");axios.get(t).then(function(t){var e=t.data.body.data,t=e.noticeTitle,e=e.noticeUrl;null!==t?n.innerHTML="<strong class=\\"tit_notice\\">공지</strong><span class=\\"txt_notice\\"><a href=\\"".concat(e,"\\" class=\\"link_txt\\">").concat(t,"</a></span>"):n.parentNode.removeChild(n)}).catch(function(t){console.log("댓글 공지 오류: "+t),n.parentNode.removeChild(n)})});</script>\n  <script src="//comment.daum.net/js/latest/alex.single.min.js"></script>\n  <script>"use strict";window.excludeCorejs=!1,window.alexConfig={label:{emptyImage:\'//i1.daumcdn.net/img-section/enter2013/liveviewer/pc_emot_co.gif\'},onLoad:function(){window.isLoadComment=!0}};</script>\n  <script>"use strict";!(function(){var t,n,a=document.querySelector(\'.aside_popular\'),e=document.querySelectorAll(".tab_aside li a"),i={"뉴스":"news","연예":"entertain","스포츠":"sports"},c={news:{el:e[0],korName:"뉴스",moreLink:"https://news.daum.net/ranking/popular/all"},entertain:{el:e[1],korName:"연예",moreLink:"https://entertain.daum.net/ranking/popular"},sports:{el:e[2],korName:"스포츠",moreLink:"https://sports.daum.net/news/ranking"}},r=c["news"].el,l=1;function s(n){var e;r!==n&&((e=r.parentNode.querySelector(".cont_aside"))&&e.parentNode.removeChild(e),r.parentNode.classList.remove("on"),n.parentNode.classList.add("on"),l=1,o(n),r=n)}function o(n){var e=n.innerText,t=i[e],a=c[t].moreLink,s=document.createElement("div"),t=d(t);function o(){var n=document.querySelector(".cont_aside .list_ranking"),e=r.innerText,e=i[e];l=this.classList.contains("btn_prev")?1===l?3:l-1:3===l?1:l+1,n.innerHTML=d(e)}s.classList.add("cont_aside"),s.innerHTML="\\n <strong class=\\"screen_out\\">".concat(e,"</strong>\\n <ol class=\\"list_ranking\\">\\n ").concat(t," \\n </ol>\\n <div class=\\"util_aside\\">\\n <button class=\\"btn_slide btn_prev\\"><span class=\\"ico_newsview\\">이전</span></button>\\n <button class=\\"btn_slide btn_next\\"><span class=\\"ico_newsview\\">다음</span></button>\\n <a href=").concat(a," class=\\"link_all\\"><span class=\\"txt_newsview\\">전체 보기</span><span class=\\"ico_newsview\\"></span></a>\\n </div>\\n "),n.parentNode.appendChild(s),s.querySelector(".btn_prev").addEventListener(\'click\',o),s.querySelector(".btn_next").addEventListener(\'click\',o)}function d(n){return c[n].contents.slice(10*(l-1),10*l).map(function(n){return"\\n <li>\\n <em class=\\"num_newsview num".concat(n.index,"\\">").concat(n.index,"위</em>\\n <strong class=\\"tit_g\\"><a href=\\"").concat(n.pcLink,"\\" class=\\"link_txt @").concat(n.index,"\\">").concat(n.title,"</a></strong>\\n </li>\\n ")}).join(\'\')}t=c,n="".concat(Conf.api.hadesRest,"/pc_popular_news?size=30"),axios.get(n).then(function(n){var e=n.data.body.data;Object.keys(e).forEach(function(n){t[n].contents=e[n]}),o(r),a.classList.remove(\'hide\')}).catch(function(n){a.parentNode.removeChild(a)}),e.forEach(function(n){n.addEventListener("mouseover",function(n){return s(n.target)}),n.addEventListener("focus",function(n){return s(n.target)})})})();</script>\n  <script>"use strict";!(function(){var t="<li>\\n <a class=\\"link_cont\\" href=\\"<%= url %>\\">\\n <span class=\\"wrap_thumb\\">\\n <img class=\\"thumb_g\\" src=\\"<%= thumbnail %>\\" alt=\\"\\"/>\\n <span class=\\"ico_phototv\\">\\n <% if (type == \'photo\') { %>\\n <span class=\\"ico_newsview ico_photo\\">포토</span>\\n <% } else { %>\\n <span class=\\"ico_newsview ico_vod\\">영상</span>\\n <% } %>\\n </span>\\n </span>\\n <strong class=\\"tit_thumb\\"><%= title %></strong>\\n </a>\\n </li>",o=document.querySelector(\'.aside_phototv\'),s=o.querySelector(\'.list_phototv\'),n="".concat(Conf.api.hadesRest,"/pc_photo_tv");function a(n){n&&n.parentNode.removeChild(n)}axios.get(n).then(function(n){n=n.data.body.data;_.isEmpty(n)?a(o):(s.innerHTML=n.map(function(n){return _.template(t)(n)}).join(\'\'),(n=o)&&n.classList.remove(\'hide\'))}).catch(function(n){console.error(\'[PC 뉴스 포토&TV]:\',n),a(o)})})();</script>\n  <script>"use strict";!(function(){var n=\'S570x320\',e="20190728165812603",t=encodeURIComponent(JSON.stringify({itemid:e,category:"news".replace(\'tain\',\'\')})),e={source:e},r="<a href=\\"<%=obj.url%>\\" class=\\"link_cont\\" data-itemid=\\"<%=obj._id%>\\"\\" data-pos=\\"<%=obj.pos%>\\">\\n <span class=\\"wrap_thumb\\"><img src=\\"<%=obj.thumbnail%>\\" class=\\"thumb_g\\" alt=\\"\\"></span>\\n <strong class=\\"tit_thumb\\"><%=obj.title%></strong>\\n </a>",o="<strong class=\\"tit_g\\">\\n <span class=\\"info_news\\"><%=obj.cp_name%></span>\\n <a href=\\"<%=obj.url%>\\" data-itemid=\\"<%=obj._id%>\\" data-pos=\\"<%=obj.pos%>\\" class=\\"link_txt\\"><%=obj.title%></a>\\n </strong>",m=[];new Toros.Connector({url:\'mediadaum/most_similar\',queryParams:t,map:function(e){var t=e._id,a=e.title,i=e.image,e=e.cp_name,e={_id:t,url:"https://v.daum.net/v/".concat(t),title:a,thumbnail:StringUtil.makeThumbnail(i,n),cp_name:e};if(!(m.length<2&&i))return e;m.push(e)},svc:\'mediadaum_sim\',impLabel:\'toros_mediadaum_sim_imp\',impProps:e,viewLabel:\'toros_mediadaum_sim_vimp\',viewProps:e,clickLabel:\'toros_mediadaum_sim_click\',clickProps:e,customRender:function(e,i,n){var s=e.filter(function(e){return!!e._id});m.length<2||s.length<10?document.querySelector(\'.realtime_news\').remove():document.querySelectorAll(\'.item_realtime_news\').forEach(function(e,t){var a=t<2?{article:m.shift(),template:r}:{article:s.shift(),template:o},t=a.article,a=a.template;t?(e.insertAdjacentHTML(\'beforeend\',_.template(a)(t)),e.classList.remove(\'item_realtime_news\'),e.classList.length||e.removeAttribute(\'class\'),t=e.querySelector(\'a\'),i.observe(t),t.addEventListener(\'click\',n)):e.remove()})}}).render()})();</script>\n  <script>"use strict";function onFailEtcBottomAd(){var t;null!==(t=document.querySelector(\'.etc_bottom_ad\'))&&void 0!==t&&t.remove()}</script>\n  <script>"use strict";!(function(){var e=document.querySelector(".direct_link");e.querySelector(".btn_fold").addEventListener(\'click\',function(){e.classList.toggle("direct_open")})})();</script>\n  <script>\n    window.minidaum_options = JSON.parse(\'{"bgType":"white","enableLogoutRetun":true,"returnUrl":"","disableHotissue":false,"disableLogo":false,"disableTracker":true,"enableTopLink":false}\');\n</script>\n  <script src="https://go.daum.net/minidaum_pc.daum"></script>\n  <script>"use strict";document.querySelectorAll(\'.kakao_ad_area\').forEach(function(a){a.setAttribute(\'data-ad-param-channel\',\'harmony\'),a.setAttribute(\'data-ad-param-cp\',\'90_pc_media_news\')});</script>\n  <script>"use strict";!(function(){var e,t,i,c=\'<div class="direct_view" style="top:<%= top %>px; width:<%= width %>px; margin-left:<%= left %>px"> <a href="<%= url %>" class="link_view"> <span class="txt_g"><%= title %></span> <span class="ico_view"> <span class="ico_newsview ico_gallery">갤러리 이동</span> </span> </a> </div>\';e=\'NHT9NtZWBe\',!(t=\'\')||(i=document.querySelector(\'img[dmcf-mtype="image"]\'))&&!i.querySelector(\'.direct_vod\')&&axios.get("".concat(Conf.api.hadesRest,"/photo_gallery_link_info?docId=").concat(e,"&galleryId=").concat(parseInt(t,10))).then(function(e){var t,a=e.data.body.data;t=i,a=(e=a).title,e=e.pcLink,a&&e&&(e={title:a,url:e,top:t.clientHeight-62,width:a=t.clientWidth,left:a/2*-1},a=document.createElement(\'div\'),t.parentNode.appendChild(a),a.outerHTML=_.template(c)(e))})})();</script>\n  <script src="//search1.daumcdn.net/search/statics/common/js/g/search_dragselection.min.js"></script>\n  <script>"use strict";!(function(){var e=document.querySelector(".head_media"),n=document.getElementById("wrapMinidaum").offsetHeight+e.offsetHeight,o=document.getElementById("barProgress"),d=document.getElementById("mAside"),s=document.getElementById("kakaoWrap"),l=document.getElementById("kakaoGnb"),r=document.getElementById("mArticle"),a=document.querySelector(".cmt_news"),c=document.querySelector(".aside_ad:first-child"),f=document.querySelector(".aside_ad:last-child"),g=document.getElementById(\'realtime_aside\');function t(){var e=window.scrollY||window.pageYOffset,t=document.body.offsetHeight,i=window.innerHeight;n<e?(i=100*e/(t-i),s.classList.add("header_fixed"),o.style.width=parseInt(i,10)+"%"):s.classList.remove("header_fixed")}function i(){var e=window.scrollX||window.pageXOffset,t=cMain.clientWidth,i=r.clientWidth,n=t-i-d.clientWidth,o=getComputedStyle(cMain),s=null;s=g?(t=g.getBoundingClientRect().left)<880?t+e:t:i+n+parseInt(o[\'marginLeft\'],10)-e,r.offsetHeight<d.offsetHeight||(a.style.minHeight=\'250px\',0<(n=(window.scrollY||window.pageYOffset)-cMain.offsetTop-8-c.clientHeight)?(o=r.offsetHeight-a.offsetHeight,(e=d.offsetHeight-f.offsetHeight)+n+8<o?(d.style.position=\'fixed\',d.style.top=l.clientHeight-c.offsetHeight-74+\'px\',d.style.left=s+\'px\'):(d.style.position=\'relative\',d.style.top=o-e+\'px\',d.style.left=\'inherit\')):(d.style.position=\'static\',d.style.top=\'inherit\',d.style.left=\'inherit\'))}\'false\'!=\'true\'&&\'news\'==\'news\'?(window.addEventListener("resize",_.throttle(i,100)),window.addEventListener("scroll",_.throttle(function(){t(),i()},100)),t(),i()):(window.addEventListener("scroll",_.throttle(function(){t()},100)),t())})();</script>\n  <script type="text/javascript" src="//t1.daumcdn.net/tiara/js/v1/tiara.min.js"></script>\n  <script>"use strict";!(function(){if(window.TiaraTracker){var c=!1,s=new Date,m="pc_news",l=null;try{l=Cookies.get(\'DAUMTOP\')||Cookies.get(\'HARMONY_TOROS_IMP\')&&window.atob(Cookies.get(\'HARMONY_TOROS_IMP\'))}catch(e){l=Cookies.get(\'DAUMTOP\')}var u=\'\',g=\'\',y=TiaraTracker.getInstance().setSvcDomain("media.daum.net").setPage("newsview").trackPage("newsview").setSection("digital").setEnableAlwaysImage(!0),f={id:"20190728165812603",type:"article",name:"\\uC77C\\uB860\\uBA38\\uC2A4\\uD06C \\"\\uD14C\\uC2AC\\uB77C\\uC5D0\\uC11C \\uB137\\uD50C\\uB9AD\\uC2A4\\u00B7\\uC720\\uD29C\\uBE0C \\uC990\\uAE38 \\uB0A0 \\uC628\\uB2E4\\"",category_id:"100031",category:"digital",author:"\\uC774\\uBBFC\\uC6B0",author_id:"letzwin@asiae.co.kr",provider:"\\uC544\\uC2DC\\uC544\\uACBD\\uC81C",provider_id:"90",regdate:"2019-07-28 16:58:12",plink:"https://media.daum.net/v/20190728165812603",image:"https://t1.daumcdn.net/news/201907/28/akn/20190728165813230vjsq.jpg",harmony_consumer_id:"media",media:"pcweb"},p={contentUniqueKey:"hamny-".concat(f.id),docId:"NHT9NtZWBe",harmony_consumer_id:"media",media:"pcweb",reg_dt:"2019-07-28 16:58:12",reg_timestamp:"1564300692871"},e=function(){c||y.actionKind("ViewContent").pageMeta(f).customProps(p).track()},t=function(){if(!c){c=!0;var e=document.body.scrollHeight,t=window.scrollY,a=e-t,o=window.innerHeight,n=Math.round(t/(e-o)*100),i={},o={duration:(new Date).getTime()-s.getTime(),scroll_percent:n,scroll_height:e,scroll_top:t,scroll_bottom:a,scroll_inner_height:o};try{var d,r=!1;!l||(d=JSON.parse(l)).contents_unique_key===p.contentUniqueKey&&(i={toros_imp_id:d.impression_id,toros_file_hash_key:d.toros_file_hash_key,toros_user_id_type:"uuid",toros_page_meta_id:p.contentUniqueKey,toros_event_meta_id:p.contentUniqueKey,toros_action_type:"dwelltime"},Cookies.remove(\'HARMONY_TOROS_IMP\',{path:\'/\',domain:location.hostname.substring(location.hostname.indexOf(\'.\'))}),Cookies.remove(\'DAUMTOP\',{path:\'/\',domain:\'.daum.net\'}),r=!0),!r&&0<u.length&&(i={toros_imp_id:window.atob(u),toros_file_hash_key:window.atob(g),toros_user_id_type:"uuid",toros_page_meta_id:p.contentUniqueKey,toros_event_meta_id:p.contentUniqueKey,toros_action_type:"dwelltime"})}catch(e){}y.trackUsage().actionKind("UsagePage").pageMeta(f).usage(o).customProps(_.assignIn(p,i)).track()}};"onpagehide"in window?(window.addEventListener("pageshow",e,!1),window.addEventListener("pagehide",t,!1)):(window.addEventListener("load",e,!1),window.addEventListener("unload",t,!1)),document.addEventListener("visibilitychange",function(){(document["hidden"]?t:e)()},!1),document.addEventListener("mousedown",function(e){var t,a,o,n,i,d,r=e.target,c=r.closest("[data-cloud]"),s=r.closest("a")||r.closest("button")||r.closest(\'div.selectionbox\');s&&null!=c&&c.contains(s)&&((i=TiaraTracker.getClickInfo(e))&&(a=(null==(t=i.action)?void 0:t.name)||"",o=(null==t?void 0:t.kind)||"",n=_.assignIn(p,i.customProps),i=r.closest("[data-tiara]"),r=s.querySelector("img"),d=0,Array.from((c||i).querySelectorAll("a, button")).map(function(e,t){e==s&&(d=t)}),e={layer1:m,layer2:c.dataset.cloud,layer3:(null==i?void 0:i.dataset.tiara)||"",click_url:s.href||"",ordnum:d,copy:s.classList.contains(\'selectionbox\')?null==t?void 0:t.name:s.innerText,image:(null==r?void 0:r.src)||"",posX:e.clientX,posY:e.clientY},y.trackEvent(a).pageMeta(f).actionKind(o).customProps(n).click(e).track()))})}})();</script>\n </body>\n</html>'
url = 'https://news.v.daum.net/v/20190728165812603'
resp = requests.get(url)

soup = BeautifulSoup(resp.text)
title = soup.find('h3', class_='tit_view')
title.get_text()
'일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"'
url = 'https://news.v.daum.net/v/20190728165812603'
resp = requests.get(url)

soup = BeautifulSoup(resp.text)
soup.find_all('span', class_='txt_info')[0]
soup.find_all('span', class_='txt_info')[1]
<span class="txt_info">입력 <span class="num_date">2019. 07. 28. 16:58</span></span>
url = 'https://news.v.daum.net/v/20190728165812603'
resp = requests.get(url)

soup = BeautifulSoup(resp.text)
info = soup.find('span', class_='info_view')
info.find('span', class_='txt_info')
<span class="txt_info">이민우</span>
url = 'https://news.v.daum.net/v/20190728165812603'
resp = requests.get(url)


#<div id="harmonyContainer" class="article_view" data-translation-body="true"> 
soup = BeautifulSoup(resp.text)
container = soup.find('div', id='harmonyContainer')
contents = ''
for p in container.find_all('p'):
    contents += p.get_text().strip()
    
contents
'[아시아경제 이민우 기자] 일론 머스크 테슬라 최고경영자(CEO)가 자사 전기 자동차 모델에 넷플릭스와 유튜브 등 온라인동영상서비스(OTT)를 탑재할 것이라고 예고했다. 단순히 자율 주행 전기차가 단순히 주행을 위한 정보를 알려주는 것을 넘어 각종 영상 콘텐츠를 즐기는 공간으로도 확장하겠다는 전략으로 풀이된다.27일(현지시간) 더버지 등 주요 외신들에 따르면 머스크 CEO는 자신의 트위터를 통해 이 같은 계획을 밝혔다. 그는 "자동차가 정차했을 때 넷플릭스와 유튜브를 감상할 수 있는 기능이 조만간 추가될 것"이라며 "편안한 좌석과 서라운드 사운드 오디오를 통해 영화관과 같은 느낌을 받을 수 있을 것"이라고 강조했다.테슬라가 이처럼 콘텐츠 방면으로 확장하려 든 것은 이번이 처음이 아니다. 지난달 세계 최대 게임쇼 E3에서는 이미 운전자가 \'폴아웃 쉘터\'라는 게임을 할 수 있을 것이라고 발표한 바 있다. 이후에도 최근 게임업체 아타리사(社)의 자동차 경주 게임 ‘폴포지션’, 슈팅게임 ‘템페스트’, ‘미사일커맨드’ 등 고전 게임을 제공하기도 했다. 운전대로 게임을 조작하는 방식으로, 차가 주차돼 있을 경우에만 즐길 수 있다.이번 영상 콘텐츠는 주행 중에도 감상할 수 있도록 하는 방안을 고려하고 있다. 테슬라 측은 규제당국이 자율주행에 대해 완전히 승인하면 차량이 움직일 때에도 승객이 동영상을 즐길 수 있을 것이라고 설명했다.하지만 아직까지 자율주행차의 안전에 대한 우려는 완전히 걷혀지지 않은 상황이다. 지난 2017년 차량공유 서비스 우버의 자율주행 시범차량이 보행자와 충돌한 사고가 발생한 바 있다. 게다가 당시 시험 운전자는 디즈니의 동영상 스트리밍 서비스인 \'훌루\'를 이용하고 있던 것으로 밝혀졌다.이민우 기자 letzwin@asiae.co.kr<ⓒ경제를 보는 눈, 세계를 보는 창 아시아경제 무단전재 배포금지>'
url = 'https://news.v.daum.net/v/20190728165812603'
resp = requests.get(url)


#<div id="harmonyContainer" class="article_view" data-translation-body="true"> 
soup = BeautifulSoup(resp.text)
container = soup.find('div', id='harmonyContainer')
container
<div class="article_view" data-translation-body="true" id="harmonyContainer">
<section dmcf-sid="NkBWHdyrlY">
<figure class="figure_frm origin_fig" dmcf-pid="N7s2biXYTL" dmcf-ptype="figure">
<p class="link_figure"><img alt="일론 머스크 테슬라 최고경영자(CEO) [이미지출처=로이터연합뉴스]" class="thumb_g_article" data-org-src="https://t1.daumcdn.net/news/201907/28/akn/20190728165813230vjsq.jpg" data-org-width="550" dmcf-mid="NBMY3ZZhN4" dmcf-mtype="image" height="auto" src="https://img3.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/201907/28/akn/20190728165813230vjsq.jpg" width="658"/></p>
<figcaption class="txt_caption default_figure">
            일론 머스크 테슬라 최고경영자(CEO) [이미지출처=로이터연합뉴스]
           </figcaption>
</figure>
<div dmcf-pid="NU9K9rfDgA" dmcf-ptype="general">
<p>[아시아경제 이민우 기자] 일론 머스크 테슬라 최고경영자(CEO)가 자사 전기 자동차 모델에 넷플릭스와 유튜브 등 온라인동영상서비스(OTT)를 탑재할 것이라고 예고했다. 단순히 자율 주행 전기차가 단순히 주행을 위한 정보를 알려주는 것을 넘어 각종 영상 콘텐츠를 즐기는 공간으로도 확장하겠다는 전략으로 풀이된다.</p>
<br/>
<p>27일(현지시간) 더버지 등 주요 외신들에 따르면 머스크 CEO는 자신의 트위터를 통해 이 같은 계획을 밝혔다. 그는 "자동차가 정차했을 때 넷플릭스와 유튜브를 감상할 수 있는 기능이 조만간 추가될 것"이라며 "편안한 좌석과 서라운드 사운드 오디오를 통해 영화관과 같은 느낌을 받을 수 있을 것"이라고 강조했다.</p>
</div>
<figure class="figure_frm origin_fig" dmcf-pid="NlqQhf4JmF" dmcf-ptype="figure">
<p class="link_figure"><img alt="(출처=일론 머스크 트위터 계정 캡쳐)" class="thumb_g_article" data-org-src="https://t1.daumcdn.net/news/201907/28/akn/20190728165813670hwxf.png" data-org-width="550" dmcf-mid="NRhnb5SRpx" dmcf-mtype="image" height="auto" src="https://img4.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/201907/28/akn/20190728165813670hwxf.png" width="658"/></p>
<figcaption class="txt_caption default_figure">
            (출처=일론 머스크 트위터 계정 캡쳐)
           </figcaption>
</figure>
<div dmcf-pid="NpkG4d9A6j" dmcf-ptype="general">
<p>테슬라가 이처럼 콘텐츠 방면으로 확장하려 든 것은 이번이 처음이 아니다. 지난달 세계 최대 게임쇼 E3에서는 이미 운전자가 '폴아웃 쉘터'라는 게임을 할 수 있을 것이라고 발표한 바 있다. 이후에도 최근 게임업체 아타리사(社)의 자동차 경주 게임 ‘폴포지션’, 슈팅게임 ‘템페스트’, ‘미사일커맨드’ 등 고전 게임을 제공하기도 했다. 운전대로 게임을 조작하는 방식으로, 차가 주차돼 있을 경우에만 즐길 수 있다.</p>
<br/>
<p>이번 영상 콘텐츠는 주행 중에도 감상할 수 있도록 하는 방안을 고려하고 있다. 테슬라 측은 규제당국이 자율주행에 대해 완전히 승인하면 차량이 움직일 때에도 승객이 동영상을 즐길 수 있을 것이라고 설명했다.</p>
<br/>
<p>하지만 아직까지 자율주행차의 안전에 대한 우려는 완전히 걷혀지지 않은 상황이다. 지난 2017년 차량공유 서비스 우버의 자율주행 시범차량이 보행자와 충돌한 사고가 발생한 바 있다. 게다가 당시 시험 운전자는 디즈니의 동영상 스트리밍 서비스인 '훌루'를 이용하고 있던 것으로 밝혀졌다.</p>
</div>
<p dmcf-pid="NUOWg8Qxyd" dmcf-ptype="general">이민우 기자 letzwin@asiae.co.kr</p>
</section>
<p data-translation="true">&lt;ⓒ경제를 보는 눈, 세계를 보는 창 아시아경제 무단전재 배포금지&gt;</p>
</div>
  • CSS를 이용하여 tag 찾기
  • select, select_one함수 사용
  • css selector 사용법
    • 태그명 찾기 tag
    • 자손 태그 찾기 - 자손 관계 (tag tag)
    • 자식 태그 찾기 - 다이렉트 자식 관계 (tag > tag)
    • 아이디 찾기 #id
    • 클래스 찾기 .class
    • 속성값 찾기 [name=’test’]
      • 속성값 prefix 찾기 [name ^=’test’]
      • 속성값 suffix 찾기 [name $=’test’]
      • 속성값 substring 찾기 [name *=’test]
    • n번째 자식 tag 찾기 :nth-child(n)
url = 'https://news.v.daum.net/v/20190728165812603'
resp = requests.get(url)

soup = BeautifulSoup(resp.text)
soup.select('h3')
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>,
 <h3 class="tit_cp">아시아경제 주요 뉴스</h3>,
 <h3 class="txt_newsview">많이본 뉴스</h3>,
 <h3 class="txt_newsview">포토&amp;TV</h3>,
 <h3 class="txt_newsview">이 시각 추천뉴스</h3>]
soup.select('div#harmonyContainer')#div태그이면서 id가 harmonyContainer 검색
[<div class="article_view" data-translation-body="true" id="harmonyContainer">
 <section dmcf-sid="NkBWHdyrlY">
 <figure class="figure_frm origin_fig" dmcf-pid="N7s2biXYTL" dmcf-ptype="figure">
 <p class="link_figure"><img alt="일론 머스크 테슬라 최고경영자(CEO) [이미지출처=로이터연합뉴스]" class="thumb_g_article" data-org-src="https://t1.daumcdn.net/news/201907/28/akn/20190728165813230vjsq.jpg" data-org-width="550" dmcf-mid="NBMY3ZZhN4" dmcf-mtype="image" height="auto" src="https://img2.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/201907/28/akn/20190728165813230vjsq.jpg" width="658"/></p>
 <figcaption class="txt_caption default_figure">
             일론 머스크 테슬라 최고경영자(CEO) [이미지출처=로이터연합뉴스]
            </figcaption>
 </figure>
 <div dmcf-pid="NU9K9rfDgA" dmcf-ptype="general">
 <p>[아시아경제 이민우 기자] 일론 머스크 테슬라 최고경영자(CEO)가 자사 전기 자동차 모델에 넷플릭스와 유튜브 등 온라인동영상서비스(OTT)를 탑재할 것이라고 예고했다. 단순히 자율 주행 전기차가 단순히 주행을 위한 정보를 알려주는 것을 넘어 각종 영상 콘텐츠를 즐기는 공간으로도 확장하겠다는 전략으로 풀이된다.</p>
 <br/>
 <p>27일(현지시간) 더버지 등 주요 외신들에 따르면 머스크 CEO는 자신의 트위터를 통해 이 같은 계획을 밝혔다. 그는 "자동차가 정차했을 때 넷플릭스와 유튜브를 감상할 수 있는 기능이 조만간 추가될 것"이라며 "편안한 좌석과 서라운드 사운드 오디오를 통해 영화관과 같은 느낌을 받을 수 있을 것"이라고 강조했다.</p>
 </div>
 <figure class="figure_frm origin_fig" dmcf-pid="NlqQhf4JmF" dmcf-ptype="figure">
 <p class="link_figure"><img alt="(출처=일론 머스크 트위터 계정 캡쳐)" class="thumb_g_article" data-org-src="https://t1.daumcdn.net/news/201907/28/akn/20190728165813670hwxf.png" data-org-width="550" dmcf-mid="NRhnb5SRpx" dmcf-mtype="image" height="auto" src="https://img4.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/201907/28/akn/20190728165813670hwxf.png" width="658"/></p>
 <figcaption class="txt_caption default_figure">
             (출처=일론 머스크 트위터 계정 캡쳐)
            </figcaption>
 </figure>
 <div dmcf-pid="NpkG4d9A6j" dmcf-ptype="general">
 <p>테슬라가 이처럼 콘텐츠 방면으로 확장하려 든 것은 이번이 처음이 아니다. 지난달 세계 최대 게임쇼 E3에서는 이미 운전자가 '폴아웃 쉘터'라는 게임을 할 수 있을 것이라고 발표한 바 있다. 이후에도 최근 게임업체 아타리사(社)의 자동차 경주 게임 ‘폴포지션’, 슈팅게임 ‘템페스트’, ‘미사일커맨드’ 등 고전 게임을 제공하기도 했다. 운전대로 게임을 조작하는 방식으로, 차가 주차돼 있을 경우에만 즐길 수 있다.</p>
 <br/>
 <p>이번 영상 콘텐츠는 주행 중에도 감상할 수 있도록 하는 방안을 고려하고 있다. 테슬라 측은 규제당국이 자율주행에 대해 완전히 승인하면 차량이 움직일 때에도 승객이 동영상을 즐길 수 있을 것이라고 설명했다.</p>
 <br/>
 <p>하지만 아직까지 자율주행차의 안전에 대한 우려는 완전히 걷혀지지 않은 상황이다. 지난 2017년 차량공유 서비스 우버의 자율주행 시범차량이 보행자와 충돌한 사고가 발생한 바 있다. 게다가 당시 시험 운전자는 디즈니의 동영상 스트리밍 서비스인 '훌루'를 이용하고 있던 것으로 밝혀졌다.</p>
 </div>
 <p dmcf-pid="NUOWg8Qxyd" dmcf-ptype="general">이민우 기자 letzwin@asiae.co.kr</p>
 </section>
 <p data-translation="true">&lt;ⓒ경제를 보는 눈, 세계를 보는 창 아시아경제 무단전재 배포금지&gt;</p>
 </div>]
soup.select('#harmonyContainer > p') #id값 검색시 #사용함 / > 은 자식검색
[<p data-translation="true">&lt;ⓒ경제를 보는 눈, 세계를 보는 창 아시아경제 무단전재 배포금지&gt;</p>]
soup.select('#harmonyContainer  p')
[<p class="link_figure"><img alt="일론 머스크 테슬라 최고경영자(CEO) [이미지출처=로이터연합뉴스]" class="thumb_g_article" data-org-src="https://t1.daumcdn.net/news/201907/28/akn/20190728165813230vjsq.jpg" data-org-width="550" dmcf-mid="NBMY3ZZhN4" dmcf-mtype="image" height="auto" src="https://img2.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/201907/28/akn/20190728165813230vjsq.jpg" width="658"/></p>,
 <p>[아시아경제 이민우 기자] 일론 머스크 테슬라 최고경영자(CEO)가 자사 전기 자동차 모델에 넷플릭스와 유튜브 등 온라인동영상서비스(OTT)를 탑재할 것이라고 예고했다. 단순히 자율 주행 전기차가 단순히 주행을 위한 정보를 알려주는 것을 넘어 각종 영상 콘텐츠를 즐기는 공간으로도 확장하겠다는 전략으로 풀이된다.</p>,
 <p>27일(현지시간) 더버지 등 주요 외신들에 따르면 머스크 CEO는 자신의 트위터를 통해 이 같은 계획을 밝혔다. 그는 "자동차가 정차했을 때 넷플릭스와 유튜브를 감상할 수 있는 기능이 조만간 추가될 것"이라며 "편안한 좌석과 서라운드 사운드 오디오를 통해 영화관과 같은 느낌을 받을 수 있을 것"이라고 강조했다.</p>,
 <p class="link_figure"><img alt="(출처=일론 머스크 트위터 계정 캡쳐)" class="thumb_g_article" data-org-src="https://t1.daumcdn.net/news/201907/28/akn/20190728165813670hwxf.png" data-org-width="550" dmcf-mid="NRhnb5SRpx" dmcf-mtype="image" height="auto" src="https://img4.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/201907/28/akn/20190728165813670hwxf.png" width="658"/></p>,
 <p>테슬라가 이처럼 콘텐츠 방면으로 확장하려 든 것은 이번이 처음이 아니다. 지난달 세계 최대 게임쇼 E3에서는 이미 운전자가 '폴아웃 쉘터'라는 게임을 할 수 있을 것이라고 발표한 바 있다. 이후에도 최근 게임업체 아타리사(社)의 자동차 경주 게임 ‘폴포지션’, 슈팅게임 ‘템페스트’, ‘미사일커맨드’ 등 고전 게임을 제공하기도 했다. 운전대로 게임을 조작하는 방식으로, 차가 주차돼 있을 경우에만 즐길 수 있다.</p>,
 <p>이번 영상 콘텐츠는 주행 중에도 감상할 수 있도록 하는 방안을 고려하고 있다. 테슬라 측은 규제당국이 자율주행에 대해 완전히 승인하면 차량이 움직일 때에도 승객이 동영상을 즐길 수 있을 것이라고 설명했다.</p>,
 <p>하지만 아직까지 자율주행차의 안전에 대한 우려는 완전히 걷혀지지 않은 상황이다. 지난 2017년 차량공유 서비스 우버의 자율주행 시범차량이 보행자와 충돌한 사고가 발생한 바 있다. 게다가 당시 시험 운전자는 디즈니의 동영상 스트리밍 서비스인 '훌루'를 이용하고 있던 것으로 밝혀졌다.</p>,
 <p dmcf-pid="NUOWg8Qxyd" dmcf-ptype="general">이민우 기자 letzwin@asiae.co.kr</p>,
 <p data-translation="true">&lt;ⓒ경제를 보는 눈, 세계를 보는 창 아시아경제 무단전재 배포금지&gt;</p>]
soup.select('h3.tit_view')
soup.select('.tit_view') #태그에 관계없이 가져옴 / 클래스 찾기 .class
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>]
soup.select('h3[class="tit_view"]') 
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>]
soup.select('h3[class^="t"]') # ^ -> t로 시작하는 클래스 이름 찾는다
soup.select('h3[class^="tx"]') #tx로 시작하는 클래스 이름 찾는다
[<h3 class="txt_newsview">많이본 뉴스</h3>,
 <h3 class="txt_newsview">포토&amp;TV</h3>,
 <h3 class="txt_newsview">이 시각 추천뉴스</h3>]
soup.select('h3[class$="view"]') #$ - > view으로 끝나는 클래스 이름 찾는다
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>,
 <h3 class="txt_newsview">많이본 뉴스</h3>,
 <h3 class="txt_newsview">포토&amp;TV</h3>,
 <h3 class="txt_newsview">이 시각 추천뉴스</h3>]
soup.select('h3[class$="_view"]')
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>]
soup.select('h3[class*="view"]') # * - > view으로 된 모든 클래스 이름 찾는다 
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>,
 <h3 class="txt_newsview">많이본 뉴스</h3>,
 <h3 class="txt_newsview">포토&amp;TV</h3>,
 <h3 class="txt_newsview">이 시각 추천뉴스</h3>]
soup.select('span.txt_info:nth-child(1)') #n번째 자식 tag 찾기 :nth-child(n)
[<span class="txt_info">이민우</span>]
soup.select('span.txt_info:nth-child(2)')
[<span class="txt_info">입력 <span class="num_date">2019. 07. 28. 16:58</span></span>]
  • 정규표현식으로 tag 찾기
import re
soup.find_all(re.compile('h\d'))#h하고 숫자가 붙는거 찾는다
[<h1> <a class="link_daum" href="https://www.daum.net"> <img alt="Daum" class="thumb_g" height="19" src="//t1.daumcdn.net/media/news/news2016/retina/logo_daum.jpg" width="45"/> </a> <a href="//news.daum.net" id="kakaoServiceLogo"><span class="ir_wa">뉴스</span></a> </h1>,
 <h2 class="screen_out">검색</h2>,
 <h2 class="screen_out">뉴스 메인메뉴</h2>,
 <h2 class="screen_out" id="kakaoBody">IT</h2>,
 <h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>,
 <h4 class="screen_out">기사 도구 모음</h4>,
 <h3 class="tit_cp">아시아경제 주요 뉴스</h3>,
 <h3 class="txt_newsview">많이본 뉴스</h3>,
 <h3 class="txt_newsview">포토&amp;TV</h3>,
 <h3 class="txt_newsview">이 시각 추천뉴스</h3>,
 <h2 class="tit_direct">바로가기</h2>,
 <h2 class="screen_out">서비스 이용정보</h2>]
soup.find_all('img', attrs={'src': '.jpg'})
[]
soup.find_all('img', attrs={'src': re.compile('.+\.jpg')})
[<img alt="Daum" class="thumb_g" height="19" src="//t1.daumcdn.net/media/news/news2016/retina/logo_daum.jpg" width="45"/>,
 <img alt="일론 머스크 테슬라 최고경영자(CEO) [이미지출처=로이터연합뉴스]" class="thumb_g_article" data-org-src="https://t1.daumcdn.net/news/201907/28/akn/20190728165813230vjsq.jpg" data-org-width="550" dmcf-mid="NBMY3ZZhN4" dmcf-mtype="image" height="auto" src="https://img2.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/201907/28/akn/20190728165813230vjsq.jpg" width="658"/>]
soup.find_all('img', attrs={'src':re.compile('.+\.gif')})
[<img alt="아시아경제" class="thumb_g" src="https://t1.daumcdn.net/media/news/news2016/cp/cp_akn.gif"/>]
soup.find_all('img', attrs={'src':re.compile('.+\.png')})
[<img alt="(출처=일론 머스크 트위터 계정 캡쳐)" class="thumb_g_article" data-org-src="https://t1.daumcdn.net/news/201907/28/akn/20190728165813670hwxf.png" data-org-width="550" dmcf-mid="NRhnb5SRpx" dmcf-mtype="image" height="auto" src="https://img4.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/201907/28/akn/20190728165813670hwxf.png" width="658"/>]
soup.find_all('h3', class_='tit_view')
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>]
soup.find_all('h3', class_=re.compile('.+newsview$'))
[<h3 class="txt_newsview">많이본 뉴스</h3>,
 <h3 class="txt_newsview">포토&amp;TV</h3>,
 <h3 class="txt_newsview">이 시각 추천뉴스</h3>]
soup.find_all('h3', class_=re.compile('.+view$'))
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>,
 <h3 class="txt_newsview">많이본 뉴스</h3>,
 <h3 class="txt_newsview">포토&amp;TV</h3>,
 <h3 class="txt_newsview">이 시각 추천뉴스</h3>]
  • 댓글 개수 추출
  • 댓글의 경우, 최초 로딩시에 전달되지 않음
  • 이 경우는 추가적으로 AJAX로 비동기적 호출을 하여 따로 data 전송을 함
    • 개발자 도구의 network 탭에서 확인(XHR: XmlHTTPRequest)
    • 비동기적 호출: 사이트의 전체가 아닌 일부분만 업데이트 가능하도록 함