728x90
Beautifulsoup 학습¶
- BeautifulSoup이란
뷰티플 수프는 HTML과 XML 문서를 파싱하기위한 파이썬 패키지입니다. 웹 스크래핑에 유용한 HTML에서 데이터를 추출하는 데 사용할 수있는 구문 분석 된 페이지에 대한 구문 분석 트리를 생성합니다.
Beautifulsoup module 불러오기¶
In [1]:
from bs4 import BeautifulSoup
HTML 문자열 파싱하기¶
In [2]:
html = '''
<div class="news_end font1 size3" id="newsEndContents">
<span class="end_photo_org"><img src="https://imgnews.pstatic.net/image/108/2021/07/29/0002976247_001_20210729050508072.jpg?type=w647" alt=""><em class="img_desc">토트넘 조 하트. /AFPBBNews=뉴스1</em></span>사실상 팀 내 세 번째 골키퍼로 밀려난 베테랑 골키퍼 조 하트(34)의 스코틀랜드 셀틱 이적설이 급부상했다. 이미 구단 간 협상이 진행 중인 가운데, 어렵지 않게 합의점을 찾을 수 있을 것이라는 전망이 더해졌다.<br><br>애슬레틱 등 영국 언론들은 28일(한국시간) "셀틱이 하트의 이적을 놓고 토트넘과 협의 중"이라며 "구단 간 합의점을 찾을 것이라는 기대가 커지는 가운데 하트는 1년 만에 팀을 떠나게 될 것"이라고 전했다.<br><br>보도에 따르면 하트는 앞서 토트넘이 피에를루이지 골리니(26)를 임대 영입하면서 사실상 팀의 세 번째 옵션으로 밀려났다. 주장이자 주전 골키퍼인 위고 요리스(35)의 입지가 굳건한 가운데 골리니가 그의 백업 역할을 맡을 가능성이 크기 때문이다.<br><br>더구나 하트가 약 5만 2000만 파운드(약 8400만원)에 달하는 주급을 받고 있는 상황이어서 토트넘 입장에서도 그의 이적을 원하고 있다. 이미 누누 에스피리투 산투 감독으로부터 전력 외 통보까지 받은 것으로 현지에서는 보고 있다. 지난해 여름 합류한 이후 1년 만에 사실상 방출 통보를 받은 것이다.<br><br>지난 시즌 유럽축구연맹(UEFA) 유로파리그나 컵대회에 출전하긴 했지만, 잉글랜드 프리미어리그(EPL) 무대에선 단 1경기도 출전하지 못한 하트로서도 꾸준한 출전을 위해선 이적이 필요한 상황이다. 사실상 구단 간 협상, 그리고 선수의 이적 의지 등 모든 게 맞아떨어지는 셈이다. 그의 이적설에 무게가 실리는 이유다.<br><br>애슬레틱은 "하트는 영입 당시에도 요리스의 후계자로는 보기 어려웠던 것이 사실이고, 선수 입장에서도 3번째 옵션이 될 마음은 없을 것"이라며 "협상이 마무리되면 에릭 라멜라(세비야), 토비 알데르베이럴트(알 두하일)의 뒤를 이어 토트넘을 떠나게 될 것"이라고 덧붙였다.<br><!--article_split-->
<p class="source"><b>기사제공</b> 스타뉴스</p>
<!-- /* 기자 카드 + 본문 내 기자 정보 -->
<div class="reporter_area">
<div class="reporter">
<div class="reporter_profile">
<div class="link_press">
<div class="press"><img src=" https://mimgnews.pstatic.net/image/upload/office_logo/108/2017/01/11/logo_108_6_20170111151211.jpg " height="20" alt="스타뉴스" title="" class="press_img" onerror="$(this).parent().hide();"></div>
<div class="name">김명석 기자</div>
</div>
</div>
<p class="email">clear@mtstarnews.com</p>
</div>
<div class="reporter _type_journalist _JOURNALIST_75595">
<div class="reporter_profile">
<a href="https://media.naver.com/journalist/108/75595" class="link_thumbnail" onclick="clickcr(this, 'art.more', '', '', event);">
<div class="thumbnail">
<!-- [D] 이미지 원본 사이즈 : 40x40 -->
<img src="https://mimgnews.pstatic.net/image/upload/journalist/2021/03/08/KMS.jpg" onerror="$(this).parent().hide();" width="40" height="40" alt="">
</div>
</a>
<div class="profile_info">
<a href="https://media.naver.com/journalist/108/75595" class="link_press" onclick="clickcr(this, 'art.more', '', '', event);">
<div class="press"><img src=" https://mimgnews.pstatic.net/image/upload/office_logo/108/2017/01/11/logo_108_6_20170111151211.jpg " height="20" alt="스타뉴스" title="" class="press_img" onerror="$(this).parent().hide();"></div>
<div class="name">김명석 기자</div>
</a>
<div class="subscribe">
<button type="button" class="button_subscribe _reporter_subscribe_btn" data-journalist-id="75595">구독</button>
<!-- <button type="button" class="button_subscribe is_on">구독중</button> -->
<!-- [D] 레이어 토글 -->
<div class="subscribe_layer" style="display: none">
<p><strong>김명석 기자의 구독을 <br>취소하시겠습니까?</strong><br>구독에서 해당 기자의 기사가 제외됩니다.</p>
<div class="button_group">
<button type="button" class="button_layer _btn_y" data-journalist-id="75595">예</button>
<button type="button" class="button_layer _btn_n">아니오</button>
</div>
<button type="button" class="button_layer_close"><span class="blind">닫기</span></button>
</div>
</div>
</div>
<div class="subscribe_info">
<dl class="subscribe_info_list">
<div class="subscribe_info_item" style="">
<dt>구독자</dt>
<dd class="_reporter_subscribe_count">818</dd>
</div>
<div class="subscribe_info_item _reactionModule" data-sid="JOURNALIST" data-cid="75595" data-ccounttype="period" style="visibility: visible;" data-loaded="1" data-facetype="0">
<dt>응원수</dt>
<dd class="_reporter_cheer_count">410</dd>
</div>
</dl>
</div>
</div>
<p class="message">스타뉴스 김명석 기자입니다.</p>
<div class="reporter_morenews">
<ul class="morenews_list">
<li class="morenews_item">
<a href="/news.nhn?oid=108&aid=0002975057" class="link_morenews" onclick="clickcr(this, 'art.bestart', '', '', event);">토트넘 베테랑 수비수, 카타르로 떠난다... SON→남태희 동료</a>
</li>
<li class="morenews_item">
<a href="/news.nhn?oid=108&aid=0002976479" class="link_morenews" onclick="clickcr(this, 'art.bestart', '', '', event);">일본 벼르던 여자핸드볼, 그래서 더 통쾌했던 한일전 승리 [도쿄올림픽]</a>
</li>
</ul>
</div>
</div>
<div class="reporter_recommend" style="display:none">
</div>
</div>
<!-- 카피라이트 배너 -->
<div class="copyright">
<p>Copyright ⓒ 스타뉴스. All rights reserved. 무단 전재 및 재배포 금지.</p>
</div>
<!-- 기사 분류 -->
<div class="categorize" id="_article_section_guide">
<a href="#wa_categorize_tooltip" class="btn_guide_categorize" role="button" aria-describedby="wa_categorize_tooltip">기사 섹션 분류 가이드</a>
<div class="guide_categorize" style="display: none;">
<em class="guide_title">기사 섹션 분류 안내</em>
<p class="guide_text" role="tooltip" id="wa_categorize_tooltip">스포츠 기사 섹션(종목) 정보는 언론사 분류와 기술 기반의 자동 분류 시스템을 따르고 있습니다. 오분류에 대한 건은 네이버스포츠로 제보 부탁드립니다.</p>
<a href="https://help.naver.com/support/contents/contents.nhn?serviceNo=1001&categoryNo=21210" class="btn_report" target="_blank" title="새창">오분류 제보하기</a>
<button type="button" class="btn_close"><span class="blind">가이드 닫기</span></button>
</div>
</div>
<!-- 언론사 프로모션 링크 -->
<div class="promotion">
<ul class="promotion_list">
<li class="promotion_item">
<a href="https://star.mt.co.kr/redirectAd.php?id=0&date=20210624031938" class="link_promotion">스타뉴스 핫이슈</a>
</li>
<li class="promotion_item">
<a href="https://star.mt.co.kr/redirectAd.php?id=1&date=20210624031938" class="link_promotion">생생 스타 현장</a>
</li>
</ul>
</div>
</div>
'''
find 함수¶
- 특정 html tag를 검색하기
In [8]:
soup = BeautifulSoup(html)
soup
Out[8]:
<html><body><div class="news_end font1 size3" id="newsEndContents"> <span class="end_photo_org"><img alt="" src="https://imgnews.pstatic.net/image/108/2021/07/29/0002976247_001_20210729050508072.jpg?type=w647"/><em class="img_desc">토트넘 조 하트. /AFPBBNews=뉴스1</em></span>사실상 팀 내 세 번째 골키퍼로 밀려난 베테랑 골키퍼 조 하트(34)의 스코틀랜드 셀틱 이적설이 급부상했다. 이미 구단 간 협상이 진행 중인 가운데, 어렵지 않게 합의점을 찾을 수 있을 것이라는 전망이 더해졌다.<br/><br/>애슬레틱 등 영국 언론들은 28일(한국시간) "셀틱이 하트의 이적을 놓고 토트넘과 협의 중"이라며 "구단 간 합의점을 찾을 것이라는 기대가 커지는 가운데 하트는 1년 만에 팀을 떠나게 될 것"이라고 전했다.<br/><br/>보도에 따르면 하트는 앞서 토트넘이 피에를루이지 골리니(26)를 임대 영입하면서 사실상 팀의 세 번째 옵션으로 밀려났다. 주장이자 주전 골키퍼인 위고 요리스(35)의 입지가 굳건한 가운데 골리니가 그의 백업 역할을 맡을 가능성이 크기 때문이다.<br/><br/>더구나 하트가 약 5만 2000만 파운드(약 8400만원)에 달하는 주급을 받고 있는 상황이어서 토트넘 입장에서도 그의 이적을 원하고 있다. 이미 누누 에스피리투 산투 감독으로부터 전력 외 통보까지 받은 것으로 현지에서는 보고 있다. 지난해 여름 합류한 이후 1년 만에 사실상 방출 통보를 받은 것이다.<br/><br/>지난 시즌 유럽축구연맹(UEFA) 유로파리그나 컵대회에 출전하긴 했지만, 잉글랜드 프리미어리그(EPL) 무대에선 단 1경기도 출전하지 못한 하트로서도 꾸준한 출전을 위해선 이적이 필요한 상황이다. 사실상 구단 간 협상, 그리고 선수의 이적 의지 등 모든 게 맞아떨어지는 셈이다. 그의 이적설에 무게가 실리는 이유다.<br/><br/>애슬레틱은 "하트는 영입 당시에도 요리스의 후계자로는 보기 어려웠던 것이 사실이고, 선수 입장에서도 3번째 옵션이 될 마음은 없을 것"이라며 "협상이 마무리되면 에릭 라멜라(세비야), 토비 알데르베이럴트(알 두하일)의 뒤를 이어 토트넘을 떠나게 될 것"이라고 덧붙였다.<br/><!--article_split--> <p class="source"><b>기사제공</b> 스타뉴스</p> <!-- /* 기자 카드 + 본문 내 기자 정보 --> <div class="reporter_area"> <div class="reporter"> <div class="reporter_profile"> <div class="link_press"> <div class="press"><img alt="스타뉴스" class="press_img" height="20" onerror="$(this).parent().hide();" src=" https://mimgnews.pstatic.net/image/upload/office_logo/108/2017/01/11/logo_108_6_20170111151211.jpg " title=""/></div> <div class="name">김명석 기자</div> </div> </div> <p class="email">clear@mtstarnews.com</p> </div> <div class="reporter _type_journalist _JOURNALIST_75595"> <div class="reporter_profile"> <a class="link_thumbnail" href="https://media.naver.com/journalist/108/75595" onclick="clickcr(this, 'art.more', '', '', event);"> <div class="thumbnail"> <!-- [D] 이미지 원본 사이즈 : 40x40 --> <img alt="" height="40" onerror="$(this).parent().hide();" src="https://mimgnews.pstatic.net/image/upload/journalist/2021/03/08/KMS.jpg" width="40"/> </div> </a> <div class="profile_info"> <a class="link_press" href="https://media.naver.com/journalist/108/75595" onclick="clickcr(this, 'art.more', '', '', event);"> <div class="press"><img alt="스타뉴스" class="press_img" height="20" onerror="$(this).parent().hide();" src=" https://mimgnews.pstatic.net/image/upload/office_logo/108/2017/01/11/logo_108_6_20170111151211.jpg " title=""/></div> <div class="name">김명석 기자</div> </a> <div class="subscribe"> <button class="button_subscribe _reporter_subscribe_btn" data-journalist-id="75595" type="button">구독</button> <!-- <button type="button" class="button_subscribe is_on">구독중</button> --> <!-- [D] 레이어 토글 --> <div class="subscribe_layer" style="display: none"> <p><strong>김명석 기자의 구독을 <br/>취소하시겠습니까?</strong><br/>구독에서 해당 기자의 기사가 제외됩니다.</p> <div class="button_group"> <button class="button_layer _btn_y" data-journalist-id="75595" type="button">예</button> <button class="button_layer _btn_n" type="button">아니오</button> </div> <button class="button_layer_close" type="button"><span class="blind">닫기</span></button> </div> </div> </div> <div class="subscribe_info"> <dl class="subscribe_info_list"> <div class="subscribe_info_item" style=""> <dt>구독자</dt> <dd class="_reporter_subscribe_count">818</dd> </div> <div class="subscribe_info_item _reactionModule" data-ccounttype="period" data-cid="75595" data-facetype="0" data-loaded="1" data-sid="JOURNALIST" style="visibility: visible;"> <dt>응원수</dt> <dd class="_reporter_cheer_count">410</dd> </div> </dl> </div> </div> <p class="message">스타뉴스 김명석 기자입니다.</p> <div class="reporter_morenews"> <ul class="morenews_list"> <li class="morenews_item"> <a class="link_morenews" href="/news.nhn?oid=108&aid=0002975057" onclick="clickcr(this, 'art.bestart', '', '', event);">토트넘 베테랑 수비수, 카타르로 떠난다... SON→남태희 동료</a> </li> <li class="morenews_item"> <a class="link_morenews" href="/news.nhn?oid=108&aid=0002976479" onclick="clickcr(this, 'art.bestart', '', '', event);">일본 벼르던 여자핸드볼, 그래서 더 통쾌했던 한일전 승리 [도쿄올림픽]</a> </li> </ul> </div> </div> <div class="reporter_recommend" style="display:none"> </div> </div> <!-- 카피라이트 배너 --> <div class="copyright"> <p>Copyright ⓒ 스타뉴스. All rights reserved. 무단 전재 및 재배포 금지.</p> </div> <!-- 기사 분류 --> <div class="categorize" id="_article_section_guide"> <a aria-describedby="wa_categorize_tooltip" class="btn_guide_categorize" href="#wa_categorize_tooltip" role="button">기사 섹션 분류 가이드</a> <div class="guide_categorize" style="display: none;"> <em class="guide_title">기사 섹션 분류 안내</em> <p class="guide_text" id="wa_categorize_tooltip" role="tooltip">스포츠 기사 섹션(종목) 정보는 언론사 분류와 기술 기반의 자동 분류 시스템을 따르고 있습니다. 오분류에 대한 건은 네이버스포츠로 제보 부탁드립니다.</p> <a class="btn_report" href="https://help.naver.com/support/contents/contents.nhn?serviceNo=1001&categoryNo=21210" target="_blank" title="새창">오분류 제보하기</a> <button class="btn_close" type="button"><span class="blind">가이드 닫기</span></button> </div> </div> <!-- 언론사 프로모션 링크 --> <div class="promotion"> <ul class="promotion_list"> <li class="promotion_item"> <a class="link_promotion" href="https://star.mt.co.kr/redirectAd.php?id=0&date=20210624031938">스타뉴스 핫이슈</a> </li> <li class="promotion_item"> <a class="link_promotion" href="https://star.mt.co.kr/redirectAd.php?id=1&date=20210624031938">생생 스타 현장</a> </li> </ul> </div> </div> </body></html>
In [15]:
soup.find('em')
Out[15]:
<em class="img_desc">토트넘 조 하트. /AFPBBNews=뉴스1</em>
In [17]:
soup.find('span')
Out[17]:
<span class="end_photo_org"><img alt="" src="https://imgnews.pstatic.net/image/108/2021/07/29/0002976247_001_20210729050508072.jpg?type=w647"/><em class="img_desc">토트넘 조 하트. /AFPBBNews=뉴스1</em></span>
In [24]:
soup.find('div', id='newsEndContents')
Out[24]:
<div class="news_end font1 size3" id="newsEndContents"> <span class="end_photo_org"><img alt="" src="https://imgnews.pstatic.net/image/108/2021/07/29/0002976247_001_20210729050508072.jpg?type=w647"/><em class="img_desc">토트넘 조 하트. /AFPBBNews=뉴스1</em></span>사실상 팀 내 세 번째 골키퍼로 밀려난 베테랑 골키퍼 조 하트(34)의 스코틀랜드 셀틱 이적설이 급부상했다. 이미 구단 간 협상이 진행 중인 가운데, 어렵지 않게 합의점을 찾을 수 있을 것이라는 전망이 더해졌다.<br/><br/>애슬레틱 등 영국 언론들은 28일(한국시간) "셀틱이 하트의 이적을 놓고 토트넘과 협의 중"이라며 "구단 간 합의점을 찾을 것이라는 기대가 커지는 가운데 하트는 1년 만에 팀을 떠나게 될 것"이라고 전했다.<br/><br/>보도에 따르면 하트는 앞서 토트넘이 피에를루이지 골리니(26)를 임대 영입하면서 사실상 팀의 세 번째 옵션으로 밀려났다. 주장이자 주전 골키퍼인 위고 요리스(35)의 입지가 굳건한 가운데 골리니가 그의 백업 역할을 맡을 가능성이 크기 때문이다.<br/><br/>더구나 하트가 약 5만 2000만 파운드(약 8400만원)에 달하는 주급을 받고 있는 상황이어서 토트넘 입장에서도 그의 이적을 원하고 있다. 이미 누누 에스피리투 산투 감독으로부터 전력 외 통보까지 받은 것으로 현지에서는 보고 있다. 지난해 여름 합류한 이후 1년 만에 사실상 방출 통보를 받은 것이다.<br/><br/>지난 시즌 유럽축구연맹(UEFA) 유로파리그나 컵대회에 출전하긴 했지만, 잉글랜드 프리미어리그(EPL) 무대에선 단 1경기도 출전하지 못한 하트로서도 꾸준한 출전을 위해선 이적이 필요한 상황이다. 사실상 구단 간 협상, 그리고 선수의 이적 의지 등 모든 게 맞아떨어지는 셈이다. 그의 이적설에 무게가 실리는 이유다.<br/><br/>애슬레틱은 "하트는 영입 당시에도 요리스의 후계자로는 보기 어려웠던 것이 사실이고, 선수 입장에서도 3번째 옵션이 될 마음은 없을 것"이라며 "협상이 마무리되면 에릭 라멜라(세비야), 토비 알데르베이럴트(알 두하일)의 뒤를 이어 토트넘을 떠나게 될 것"이라고 덧붙였다.<br/><!--article_split--> <p class="source"><b>기사제공</b> 스타뉴스</p> <!-- /* 기자 카드 + 본문 내 기자 정보 --> <div class="reporter_area"> <div class="reporter"> <div class="reporter_profile"> <div class="link_press"> <div class="press"><img alt="스타뉴스" class="press_img" height="20" onerror="$(this).parent().hide();" src=" https://mimgnews.pstatic.net/image/upload/office_logo/108/2017/01/11/logo_108_6_20170111151211.jpg " title=""/></div> <div class="name">김명석 기자</div> </div> </div> <p class="email">clear@mtstarnews.com</p> </div> <div class="reporter _type_journalist _JOURNALIST_75595"> <div class="reporter_profile"> <a class="link_thumbnail" href="https://media.naver.com/journalist/108/75595" onclick="clickcr(this, 'art.more', '', '', event);"> <div class="thumbnail"> <!-- [D] 이미지 원본 사이즈 : 40x40 --> <img alt="" height="40" onerror="$(this).parent().hide();" src="https://mimgnews.pstatic.net/image/upload/journalist/2021/03/08/KMS.jpg" width="40"/> </div> </a> <div class="profile_info"> <a class="link_press" href="https://media.naver.com/journalist/108/75595" onclick="clickcr(this, 'art.more', '', '', event);"> <div class="press"><img alt="스타뉴스" class="press_img" height="20" onerror="$(this).parent().hide();" src=" https://mimgnews.pstatic.net/image/upload/office_logo/108/2017/01/11/logo_108_6_20170111151211.jpg " title=""/></div> <div class="name">김명석 기자</div> </a> <div class="subscribe"> <button class="button_subscribe _reporter_subscribe_btn" data-journalist-id="75595" type="button">구독</button> <!-- <button type="button" class="button_subscribe is_on">구독중</button> --> <!-- [D] 레이어 토글 --> <div class="subscribe_layer" style="display: none"> <p><strong>김명석 기자의 구독을 <br/>취소하시겠습니까?</strong><br/>구독에서 해당 기자의 기사가 제외됩니다.</p> <div class="button_group"> <button class="button_layer _btn_y" data-journalist-id="75595" type="button">예</button> <button class="button_layer _btn_n" type="button">아니오</button> </div> <button class="button_layer_close" type="button"><span class="blind">닫기</span></button> </div> </div> </div> <div class="subscribe_info"> <dl class="subscribe_info_list"> <div class="subscribe_info_item" style=""> <dt>구독자</dt> <dd class="_reporter_subscribe_count">818</dd> </div> <div class="subscribe_info_item _reactionModule" data-ccounttype="period" data-cid="75595" data-facetype="0" data-loaded="1" data-sid="JOURNALIST" style="visibility: visible;"> <dt>응원수</dt> <dd class="_reporter_cheer_count">410</dd> </div> </dl> </div> </div> <p class="message">스타뉴스 김명석 기자입니다.</p> <div class="reporter_morenews"> <ul class="morenews_list"> <li class="morenews_item"> <a class="link_morenews" href="/news.nhn?oid=108&aid=0002975057" onclick="clickcr(this, 'art.bestart', '', '', event);">토트넘 베테랑 수비수, 카타르로 떠난다... SON→남태희 동료</a> </li> <li class="morenews_item"> <a class="link_morenews" href="/news.nhn?oid=108&aid=0002976479" onclick="clickcr(this, 'art.bestart', '', '', event);">일본 벼르던 여자핸드볼, 그래서 더 통쾌했던 한일전 승리 [도쿄올림픽]</a> </li> </ul> </div> </div> <div class="reporter_recommend" style="display:none"> </div> </div> <!-- 카피라이트 배너 --> <div class="copyright"> <p>Copyright ⓒ 스타뉴스. All rights reserved. 무단 전재 및 재배포 금지.</p> </div> <!-- 기사 분류 --> <div class="categorize" id="_article_section_guide"> <a aria-describedby="wa_categorize_tooltip" class="btn_guide_categorize" href="#wa_categorize_tooltip" role="button">기사 섹션 분류 가이드</a> <div class="guide_categorize" style="display: none;"> <em class="guide_title">기사 섹션 분류 안내</em> <p class="guide_text" id="wa_categorize_tooltip" role="tooltip">스포츠 기사 섹션(종목) 정보는 언론사 분류와 기술 기반의 자동 분류 시스템을 따르고 있습니다. 오분류에 대한 건은 네이버스포츠로 제보 부탁드립니다.</p> <a class="btn_report" href="https://help.naver.com/support/contents/contents.nhn?serviceNo=1001&categoryNo=21210" target="_blank" title="새창">오분류 제보하기</a> <button class="btn_close" type="button"><span class="blind">가이드 닫기</span></button> </div> </div> <!-- 언론사 프로모션 링크 --> <div class="promotion"> <ul class="promotion_list"> <li class="promotion_item"> <a class="link_promotion" href="https://star.mt.co.kr/redirectAd.php?id=0&date=20210624031938">스타뉴스 핫이슈</a> </li> <li class="promotion_item"> <a class="link_promotion" href="https://star.mt.co.kr/redirectAd.php?id=1&date=20210624031938">생생 스타 현장</a> </li> </ul> </div> </div>
In [23]:
soup.find('div', class_='name')
Out[23]:
<div class="name">김명석 기자</div>
In [25]:
attrs = {'id': 'newsEndContents', 'class': 'news_end font1 size3'}
soup.find('div', attrs=attrs)
Out[25]:
<div class="news_end font1 size3" id="newsEndContents"> <span class="end_photo_org"><img alt="" src="https://imgnews.pstatic.net/image/108/2021/07/29/0002976247_001_20210729050508072.jpg?type=w647"/><em class="img_desc">토트넘 조 하트. /AFPBBNews=뉴스1</em></span>사실상 팀 내 세 번째 골키퍼로 밀려난 베테랑 골키퍼 조 하트(34)의 스코틀랜드 셀틱 이적설이 급부상했다. 이미 구단 간 협상이 진행 중인 가운데, 어렵지 않게 합의점을 찾을 수 있을 것이라는 전망이 더해졌다.<br/><br/>애슬레틱 등 영국 언론들은 28일(한국시간) "셀틱이 하트의 이적을 놓고 토트넘과 협의 중"이라며 "구단 간 합의점을 찾을 것이라는 기대가 커지는 가운데 하트는 1년 만에 팀을 떠나게 될 것"이라고 전했다.<br/><br/>보도에 따르면 하트는 앞서 토트넘이 피에를루이지 골리니(26)를 임대 영입하면서 사실상 팀의 세 번째 옵션으로 밀려났다. 주장이자 주전 골키퍼인 위고 요리스(35)의 입지가 굳건한 가운데 골리니가 그의 백업 역할을 맡을 가능성이 크기 때문이다.<br/><br/>더구나 하트가 약 5만 2000만 파운드(약 8400만원)에 달하는 주급을 받고 있는 상황이어서 토트넘 입장에서도 그의 이적을 원하고 있다. 이미 누누 에스피리투 산투 감독으로부터 전력 외 통보까지 받은 것으로 현지에서는 보고 있다. 지난해 여름 합류한 이후 1년 만에 사실상 방출 통보를 받은 것이다.<br/><br/>지난 시즌 유럽축구연맹(UEFA) 유로파리그나 컵대회에 출전하긴 했지만, 잉글랜드 프리미어리그(EPL) 무대에선 단 1경기도 출전하지 못한 하트로서도 꾸준한 출전을 위해선 이적이 필요한 상황이다. 사실상 구단 간 협상, 그리고 선수의 이적 의지 등 모든 게 맞아떨어지는 셈이다. 그의 이적설에 무게가 실리는 이유다.<br/><br/>애슬레틱은 "하트는 영입 당시에도 요리스의 후계자로는 보기 어려웠던 것이 사실이고, 선수 입장에서도 3번째 옵션이 될 마음은 없을 것"이라며 "협상이 마무리되면 에릭 라멜라(세비야), 토비 알데르베이럴트(알 두하일)의 뒤를 이어 토트넘을 떠나게 될 것"이라고 덧붙였다.<br/><!--article_split--> <p class="source"><b>기사제공</b> 스타뉴스</p> <!-- /* 기자 카드 + 본문 내 기자 정보 --> <div class="reporter_area"> <div class="reporter"> <div class="reporter_profile"> <div class="link_press"> <div class="press"><img alt="스타뉴스" class="press_img" height="20" onerror="$(this).parent().hide();" src=" https://mimgnews.pstatic.net/image/upload/office_logo/108/2017/01/11/logo_108_6_20170111151211.jpg " title=""/></div> <div class="name">김명석 기자</div> </div> </div> <p class="email">clear@mtstarnews.com</p> </div> <div class="reporter _type_journalist _JOURNALIST_75595"> <div class="reporter_profile"> <a class="link_thumbnail" href="https://media.naver.com/journalist/108/75595" onclick="clickcr(this, 'art.more', '', '', event);"> <div class="thumbnail"> <!-- [D] 이미지 원본 사이즈 : 40x40 --> <img alt="" height="40" onerror="$(this).parent().hide();" src="https://mimgnews.pstatic.net/image/upload/journalist/2021/03/08/KMS.jpg" width="40"/> </div> </a> <div class="profile_info"> <a class="link_press" href="https://media.naver.com/journalist/108/75595" onclick="clickcr(this, 'art.more', '', '', event);"> <div class="press"><img alt="스타뉴스" class="press_img" height="20" onerror="$(this).parent().hide();" src=" https://mimgnews.pstatic.net/image/upload/office_logo/108/2017/01/11/logo_108_6_20170111151211.jpg " title=""/></div> <div class="name">김명석 기자</div> </a> <div class="subscribe"> <button class="button_subscribe _reporter_subscribe_btn" data-journalist-id="75595" type="button">구독</button> <!-- <button type="button" class="button_subscribe is_on">구독중</button> --> <!-- [D] 레이어 토글 --> <div class="subscribe_layer" style="display: none"> <p><strong>김명석 기자의 구독을 <br/>취소하시겠습니까?</strong><br/>구독에서 해당 기자의 기사가 제외됩니다.</p> <div class="button_group"> <button class="button_layer _btn_y" data-journalist-id="75595" type="button">예</button> <button class="button_layer _btn_n" type="button">아니오</button> </div> <button class="button_layer_close" type="button"><span class="blind">닫기</span></button> </div> </div> </div> <div class="subscribe_info"> <dl class="subscribe_info_list"> <div class="subscribe_info_item" style=""> <dt>구독자</dt> <dd class="_reporter_subscribe_count">818</dd> </div> <div class="subscribe_info_item _reactionModule" data-ccounttype="period" data-cid="75595" data-facetype="0" data-loaded="1" data-sid="JOURNALIST" style="visibility: visible;"> <dt>응원수</dt> <dd class="_reporter_cheer_count">410</dd> </div> </dl> </div> </div> <p class="message">스타뉴스 김명석 기자입니다.</p> <div class="reporter_morenews"> <ul class="morenews_list"> <li class="morenews_item"> <a class="link_morenews" href="/news.nhn?oid=108&aid=0002975057" onclick="clickcr(this, 'art.bestart', '', '', event);">토트넘 베테랑 수비수, 카타르로 떠난다... SON→남태희 동료</a> </li> <li class="morenews_item"> <a class="link_morenews" href="/news.nhn?oid=108&aid=0002976479" onclick="clickcr(this, 'art.bestart', '', '', event);">일본 벼르던 여자핸드볼, 그래서 더 통쾌했던 한일전 승리 [도쿄올림픽]</a> </li> </ul> </div> </div> <div class="reporter_recommend" style="display:none"> </div> </div> <!-- 카피라이트 배너 --> <div class="copyright"> <p>Copyright ⓒ 스타뉴스. All rights reserved. 무단 전재 및 재배포 금지.</p> </div> <!-- 기사 분류 --> <div class="categorize" id="_article_section_guide"> <a aria-describedby="wa_categorize_tooltip" class="btn_guide_categorize" href="#wa_categorize_tooltip" role="button">기사 섹션 분류 가이드</a> <div class="guide_categorize" style="display: none;"> <em class="guide_title">기사 섹션 분류 안내</em> <p class="guide_text" id="wa_categorize_tooltip" role="tooltip">스포츠 기사 섹션(종목) 정보는 언론사 분류와 기술 기반의 자동 분류 시스템을 따르고 있습니다. 오분류에 대한 건은 네이버스포츠로 제보 부탁드립니다.</p> <a class="btn_report" href="https://help.naver.com/support/contents/contents.nhn?serviceNo=1001&categoryNo=21210" target="_blank" title="새창">오분류 제보하기</a> <button class="btn_close" type="button"><span class="blind">가이드 닫기</span></button> </div> </div> <!-- 언론사 프로모션 링크 --> <div class="promotion"> <ul class="promotion_list"> <li class="promotion_item"> <a class="link_promotion" href="https://star.mt.co.kr/redirectAd.php?id=0&date=20210624031938">스타뉴스 핫이슈</a> </li> <li class="promotion_item"> <a class="link_promotion" href="https://star.mt.co.kr/redirectAd.php?id=1&date=20210624031938">생생 스타 현장</a> </li> </ul> </div> </div>
find_all함수¶
- find는 첫번째 tag만 검색, find_all은 조건에 맞는 모든 tag를 리스트로 반환
In [26]:
soup.find_all('p')
Out[26]:
[<p class="source"><b>기사제공</b> 스타뉴스</p>, <p class="email">clear@mtstarnews.com</p>, <p><strong>김명석 기자의 구독을 <br/>취소하시겠습니까?</strong><br/>구독에서 해당 기자의 기사가 제외됩니다.</p>, <p class="message">스타뉴스 김명석 기자입니다.</p>, <p>Copyright ⓒ 스타뉴스. All rights reserved. 무단 전재 및 재배포 금지.</p>, <p class="guide_text" id="wa_categorize_tooltip" role="tooltip">스포츠 기사 섹션(종목) 정보는 언론사 분류와 기술 기반의 자동 분류 시스템을 따르고 있습니다. 오분류에 대한 건은 네이버스포츠로 제보 부탁드립니다.</p>]
In [27]:
soup.find_all('div', class_='name')
Out[27]:
[<div class="name">김명석 기자</div>, <div class="name">김명석 기자</div>]
get_text 함수¶
- tag안의 value만 추출
In [28]:
tag = soup.find('div', class_='name')
print(tag)
tag.get_text()
<div class="name">김명석 기자</div>
Out[28]:
'김명석 기자'
In [29]:
tag = soup.find('p')
tag.get_text()
Out[29]:
'기사제공 스타뉴스'
In [30]:
tag = soup.find('div')
tag.get_text()
Out[30]:
'\n토트넘 조 하트. /AFPBBNews=뉴스1사실상 팀 내 세 번째 골키퍼로 밀려난 베테랑 골키퍼 조 하트(34)의 스코틀랜드 셀틱 이적설이 급부상했다. 이미 구단 간 협상이 진행 중인 가운데, 어렵지 않게 합의점을 찾을 수 있을 것이라는 전망이 더해졌다.애슬레틱 등 영국 언론들은 28일(한국시간) "셀틱이 하트의 이적을 놓고 토트넘과 협의 중"이라며 "구단 간 합의점을 찾을 것이라는 기대가 커지는 가운데 하트는 1년 만에 팀을 떠나게 될 것"이라고 전했다.보도에 따르면 하트는 앞서 토트넘이 피에를루이지 골리니(26)를 임대 영입하면서 사실상 팀의 세 번째 옵션으로 밀려났다. 주장이자 주전 골키퍼인 위고 요리스(35)의 입지가 굳건한 가운데 골리니가 그의 백업 역할을 맡을 가능성이 크기 때문이다.더구나 하트가 약 5만 2000만 파운드(약 8400만원)에 달하는 주급을 받고 있는 상황이어서 토트넘 입장에서도 그의 이적을 원하고 있다. 이미 누누 에스피리투 산투 감독으로부터 전력 외 통보까지 받은 것으로 현지에서는 보고 있다. 지난해 여름 합류한 이후 1년 만에 사실상 방출 통보를 받은 것이다.지난 시즌 유럽축구연맹(UEFA) 유로파리그나 컵대회에 출전하긴 했지만, 잉글랜드 프리미어리그(EPL) 무대에선 단 1경기도 출전하지 못한 하트로서도 꾸준한 출전을 위해선 이적이 필요한 상황이다. 사실상 구단 간 협상, 그리고 선수의 이적 의지 등 모든 게 맞아떨어지는 셈이다. 그의 이적설에 무게가 실리는 이유다.애슬레틱은 "하트는 영입 당시에도 요리스의 후계자로는 보기 어려웠던 것이 사실이고, 선수 입장에서도 3번째 옵션이 될 마음은 없을 것"이라며 "협상이 마무리되면 에릭 라멜라(세비야), 토비 알데르베이럴트(알 두하일)의 뒤를 이어 토트넘을 떠나게 될 것"이라고 덧붙였다.\n기사제공 스타뉴스\n\n\n\n\n\n\n김명석 기자\n\n\nclear@mtstarnews.com\n\n\n\n\n\n\n\n\n\n\n\n\n김명석 기자\n\n\n구독\n\n\n\n김명석 기자의 구독을 취소하시겠습니까?구독에서 해당 기자의 기사가 제외됩니다.\n\n예\n아니오\n\n닫기\n\n\n\n\n\n\n구독자\n818\n\n\n응원수\n410\n\n\n\n\n스타뉴스 김명석 기자입니다.\n\n\n\n토트넘 베테랑 수비수, 카타르로 떠난다... SON→남태희 동료\n\n\n일본 벼르던 여자핸드볼, 그래서 더 통쾌했던 한일전 승리 [도쿄올림픽]\n\n\n\n\n\n\n\n\n\nCopyright ⓒ 스타뉴스. All rights reserved. 무단 전재 및 재배포 금지.\n\n\n\n기사 섹션 분류 가이드\n\n기사 섹션 분류 안내\n스포츠 기사 섹션(종목) 정보는 언론사 분류와 기술 기반의 자동 분류 시스템을 따르고 있습니다. 오분류에 대한 건은 네이버스포츠로 제보 부탁드립니다.\n오분류 제보하기\n가이드 닫기\n\n\n\n\n\n\n스타뉴스 핫이슈\n\n\n생생 스타 현장\n\n\n\n'
attribute 값 추출¶
- []연산을 통해 검색한 tag에서 추출 가능
In [32]:
tag = soup.find('p')
print(tag)
tag['class'], type(tag)
<p class="source"><b>기사제공</b> 스타뉴스</p>
Out[32]:
(['source'], bs4.element.Tag)
728x90
반응형
'AI > K-Digital Training' 카테고리의 다른 글
007. 로그인 후 웹크롤링 및 셀레니움 활용 웹크롤링 (0) | 2021.08.03 |
---|---|
006. BeautifulSoup으로 웹크롤링 학습2 (0) | 2021.08.02 |
004. requests 모듈로 웹 크롤링 학습 (0) | 2021.07.31 |
003. Numpy_Study2 (0) | 2021.07.30 |
002.Numpy_Study 1 (0) | 2021.07.29 |