SiLaure's Data
[BeautifulSoup] 02~04. id class 속성/CSS/정규표현식을 이용하여 원하는 값 추출하기 본문
Records of/Learning
[BeautifulSoup] 02~04. id class 속성/CSS/정규표현식을 이용하여 원하는 값 추출하기
data_soin 2021. 8. 1. 14:19
- beautifulsoup 모듈 사용하기
- id, class 속성으로 tag 찾기
- CSS를 이용하여 tag 찾기
- 속성 값으로 tag 찾기
- 정규표현식으로 tag 찾기
- 개발자도구를 이용하여 동적으로 로딩되는 데이터 추출하기
In [1]:
import requests
from bs4 import BeautifulSoup
- 다음 뉴스 데이터 추출
- 뉴스기사에서 제목, 작성자, 작성일 , 댓글 개수 추출
- 뉴스링크
- tag를 추출할때는 가장 그 tag를 쉽게 특정할 수 있는 속성을 사용
- id의 경우 원칙적으로 한 html 문서 내에서 유일
- id, class 속성으로 tag 찾기
- 타이틀
- 작성자, 작성일
In [2]:
url = 'https://news.v.daum.net/v/20190728165812603'
resp = requests.get(url)
resp.text
Out[2]:
'<!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/a3807badcf782bfe521bceb8b042040ee11676b0.css\');\n @import url(\'//t1.daumcdn.net/harmony_static/cloud/2021/07/23/common.ae4ccf51e116cfe2d17f.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="일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다""> \n <meta property="og:regDate" content="20190728165812"> \n <meta property="og:type" content="article"> \n <meta property="og:article:author" content="아시아경제"> \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 p
...
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=""> i> \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 hreclass="inner_bar"></span></span></a></li> \n </ul> \n <div class="gnb_etc"> \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"> <la </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://img2.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"><ⓒ경제를 보는 눈, 세계를 보는 창 아시아경제 무단전재 배포금지></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 \'tv\':\'digital\',t=document.querySelector(\'.gnb_comm\');(t=e&&t.querySelector(".".concat(e)))&&t.setAttribute(\'class\',"".concat(e," on"))})();</script>\n 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>'
In [3]:
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()
Out[3]:
'일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"'
In [4]:
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]
Out[4]:
<span class="txt_info">입력 <span class="num_date">2019. 07. 28. 16:58</span></span>
In [5]:
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')
Out[5]:
<span class="txt_info">이민우</span>
In [6]:
url = 'https://news.v.daum.net/v/20190728165812603'
resp = requests.get(url)
soup = BeautifulSoup(resp.text)
container = soup.find('div', id='harmonyContainer')
contents = ''
for p in container.find_all('p'):
contents += p.get_text()
contents
Out[6]:
'[아시아경제 이민우 기자] 일론 머스크 테슬라 최고경영자(CEO)가 자사 전기 자동차 모델에 넷플릭스와 유튜브 등 온라인동영상서비스(OTT)를 탑재할 것이라고 예고했다. 단순히 자율 주행 전기차가 단순히 주행을 위한 정보를 알려주는 것을 넘어 각종 영상 콘텐츠를 즐기는 공간으로도 확장하겠다는 전략으로 풀이된다.27일(현지시간) 더버지 등 주요 외신들에 따르면 머스크 CEO는 자신의 트위터를 통해 이 같은 계획을 밝혔다. 그는 "자동차가 정차했을 때 넷플릭스와 유튜브를 감상할 수 있는 기능이 조만간 추가될 것"이라며 "편안한 좌석과 서라운드 사운드 오디오를 통해 영화관과 같은 느낌을 받을 수 있을 것"이라고 강조했다.테슬라가 이처럼 콘텐츠 방면으로 확장하려 든 것은 이번이 처음이 아니다. 지난달 세계 최대 게임쇼 E3에서는 이미 운전자가 \'폴아웃 쉘터\'라는 게임을 할 수 있을 것이라고 발표한 바 있다. 이후에도 최근 게임업체 아타리사(社)의 자동차 경주 게임 ‘폴포지션’, 슈팅게임 ‘템페스트’, ‘미사일커맨드’ 등 고전 게임을 제공하기도 했다. 운전대로 게임을 조작하는 방식으로, 차가 주차돼 있을 경우에만 즐길 수 있다.이번 영상 콘텐츠는 주행 중에도 감상할 수 있도록 하는 방안을 고려하고 있다. 테슬라 측은 규제당국이 자율주행에 대해 완전히 승인하면 차량이 움직일 때에도 승객이 동영상을 즐길 수 있을 것이라고 설명했다.하지만 아직까지 자율주행차의 안전에 대한 우려는 완전히 걷혀지지 않은 상황이다. 지난 2017년 차량공유 서비스 우버의 자율주행 시범차량이 보행자와 충돌한 사고가 발생한 바 있다. 게다가 당시 시험 운전자는 디즈니의 동영상 스트리밍 서비스인 \'훌루\'를 이용하고 있던 것으로 밝혀졌다.이민우 기자 letzwin@asiae.co.kr<ⓒ경제를 보는 눈, 세계를 보는 창 아시아경제 무단전재 배포금지>'
- 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)
In [7]:
url = 'https://news.v.daum.net/v/20190728165812603'
resp = requests.get(url)
soup = BeautifulSoup(resp.text)
soup.select('h3')
Out[7]:
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>,
<h3 class="tit_cp">아시아경제 주요 뉴스</h3>,
<h3 class="txt_newsview">많이본 뉴스</h3>,
<h3 class="txt_newsview">포토&TV</h3>,
<h3 class="txt_newsview">이 시각 추천뉴스</h3>]
In [8]:
soup.select('#harmonyContainer > p') --자식 tag
soup.select('#harmonyContainer p') --자손 tag
Out[8]:
[<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://img2.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"><ⓒ경제를 보는 눈, 세계를 보는 창 아시아경제 무단전재 배포금지></p>]
In [9]:
soup.select('h3.tit_view') --h3 tag이면서 tit_view를 id로 갖는 것
soup.select('.tit_view') --id는 고유하므로 tag를 생략해도 결과는 같다.
Out[9]:
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>]
In [10]:
soup.select('h3[class="tit_view"]') --h3 tag이면서 class가 tit_view인 것
Out[10]:
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>]
In [11]:
soup.select('h3[class^="t"]') --h3 tag이면서 t로 시작하는 class
soup.select('h3[class^="tx"]') --h3 tag이면서 tx로 시작하는 class
Out[11]:
[<h3 class="txt_newsview">많이본 뉴스</h3>,
<h3 class="txt_newsview">포토&TV</h3>,
<h3 class="txt_newsview">이 시각 추천뉴스</h3>]
In [12]:
soup.select('h3[class$="view"]') --h3 tag이면서 view로 끝나는 class
soup.select('h3[class$="_view"]') --h3 tag이면서 _view로 끝나는 class
Out[12]:
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>]
In [13]:
soup.select('h3[class*="view"]') --h3 tag이면서 view를 포함하는 class
Out[13]:
[<h3 class="tit_view" data-translation="true">일론머스크 "테슬라에서 넷플릭스·유튜브 즐길 날 온다"</h3>,
<h3 class="txt_newsview">많이본 뉴스</h3>,
<h3 class="txt_newsview">포토&TV</h3>,
<h3 class="txt_newsview">이 시각 추천뉴스</h3>]
In [14]:
soup.select('span.txt_info:nth-child(1)')
soup.select('span.txt_info:nth-child(2)')
Out[14]:
[<span class="txt_info">입력 <span class="num_date">2019. 07. 28. 16:58</span></span>]
- 정규표현식으로 tag 찾기
In [15]:
import re
In [16]:
soup.find_all(re.compile('h\d'))
Out[16]:
[<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">포토&TV</h3>,
<h3 class="txt_newsview">이 시각 추천뉴스</h3>,
<h2 class="tit_direct">바로가기</h2>,
<h2 class="screen_out">서비스 이용정보</h2>]
In [17]:
soup.find_all('img', attrs={'src': '.jpg'})
Out[17]:
[]
In [18]:
soup.find_all('img', attrs={'src': re.compile('.+\.jpg')})
Out[18]:
[<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"/>]
In [19]:
soup.find_all('h3', class_='tit_view')
soup.find_all('h3', class_=re.compile('.+newsview$'))
Out[19]:
[<h3 class="txt_newsview">많이본 뉴스</h3>,
<h3 class="txt_newsview">포토&TV</h3>,
<h3 class="txt_newsview">이 시각 추천뉴스</h3>]
- 댓글 개수 추출
- 댓글의 경우, 최초 로딩시에 전달되지 않음
- 이 경우는 추가적으로 AJAX로 비동기적 호출을 하여 따로 data 전송을 함
- 개발자 도구의 network 탭에서 확인(XHR: XmlHTTPRequest)
- 비동기적 호출: 사이트의 전체가 아닌 일부분만 업데이트 가능하도록 함
'Records of > Learning' 카테고리의 다른 글
[DB] 01. 데이터베이스 (0) | 2021.08.04 |
---|---|
[selenium] 01. 사이트에 로그인하여 데이터 크롤링하기 (0) | 2021.08.01 |
[Kaggle] Titanic Competition (0) | 2021.07.30 |
[beautifulsoup] 01. beautifulsoup 모듈 사용하여 HTML 파싱하기(parsing) (0) | 2021.07.29 |
[API] Open API를 활용하여 json 데이터 추출하기(공공데이터 API) (0) | 2021.07.29 |
Comments