웹크롤링 - 연습문제와 흥미로운 예제

5. 연습문제와 흥미로운 예제

연습문제3
1. 다음 뉴스 경제란 뉴스 타이틀 추출하기
- http://media.daum.net/economic/ 로 크롤링된 데이터 중 http:// 로 시작하는 링크를 다시 들어가서, title 태그 정보만 출력해보기

X 참고코드: git 저장소에서 02_examples/crawling_daum_news_title.py 를 참고
- 프로그래밍은 스스로 작성을 해야 합니다. 정 이해하기 어려울 때만 참고코드를 보시면 좋을 것 같습니다.
import re
import requests
from bs4 import BeautifulSoup

res = requests.get('http://media.daum.net/economic/')
[-------------------------------------------------]

# a태그이면서 href 속성을 갖는 경우 탐색, 리스트 타입으로 links 변수에 저장됨
links = soup.select('a[href]')
for link in links:
    if re.search('http://\w+', link['href']):  # 이 부분도 개선의 여지가 있어보입니다만...(고급)
    [-------------------------------------------------]
    [-------------------------------------------------]
    [-------------------------------------------------]    
http://v.media.daum.net/v/20170916130602430 北 축전에 조롱거리 된 싱가포르 첫 여성대통령 | Daum 뉴스
http://v.media.daum.net/v/20170916143016107 교육부 "집단 휴업 사립유치원, 감사 등 책임 묻겠다" | Daum 뉴스
http://v.media.daum.net/v/20170916011416365 G70 고급 세단 시장 도전장 .. 벤츠·BMW와 럭셔리 대결 | Daum 뉴스
http://v.media.daum.net/v/20170916080026736 [WEEKLY BIZ] 파산 직전의 철강회사는 어떻게 1년 만에 2조 흑자를 냈나 | Daum 뉴스
http://v.media.daum.net/v/20170916143005105 "일본 공짜 커피를 보고 발상을 전환하라" | Daum 뉴스
http://v.media.daum.net/v/20170916063044959 [토요정담]6년째 '으르렁' 대는 文·安의 악연..'되게 하는 힘'과 '안 되게 하는 힘' | Daum 뉴스
http://v.media.daum.net/v/20170909140103098 [장은석 기자의 호갱 탈출] 물 차고 시간 안 맞는 고급 손목시계, 환불·보상받을 수 있는 방법 있나요 | Daum 뉴스
http://v.media.daum.net/v/20170916140103841 [장은석 기자의 호갱 탈출] 게임 아이템 날아갔는데 환불되나요 | Daum 뉴스
http://v.media.daum.net/v/20170916134540719 [사진현장] 초조함, 기다림, 부르튼 발. 취업문 앞 청년들 | Daum 뉴스
http://v.media.daum.net/v/20170916033622124 사라지는 '뉴스테이'.. 힘 받는 '행복주택' | Daum 뉴스
http://v.media.daum.net/v/20170915185902464 연임 앞둔 윤종규 KB금융 회장 "행장 분리, 이사회와 논의" | Daum 뉴스
http://v.media.daum.net/v/20170825194602752 [장은석 기자의 호갱 탈출] 90% 할인 판매? 쇼핑몰 '실수'면 거래 취소된다 | Daum 뉴스
http://v.media.daum.net/v/20170916130113385 "우리 개는 안 물어요"..목줄 푸는 주인들의 착각 | Daum 뉴스
http://v.media.daum.net/v/20170909090016232 [오은석의부동산재테크]과도한 수요 억제는 집값폭등을 부른다 | Daum 뉴스
http://v.media.daum.net/v/20170916060104650 결손 처분한 체납건보료 6년간 4천여억원 | Daum 뉴스
http://v.media.daum.net/v/20170915134002434 코스피, 北 미사일 도발에도 보합권..코스닥은 '상승' | Daum 뉴스
http://v.media.daum.net/v/20170916090013176 [오은석의부동산재테크]불확실한 시장에서 우량 물건을 잡는 방법 | Daum 뉴스
http://v.media.daum.net/v/20170916110251463 [박수찬의 軍] "한국, 대륙서 돈만 벌고 사드 외면" 중국의 직격탄 | Daum 뉴스
http://v.media.daum.net/v/20170916134517716 토성탐사선 카시니의 '유작'(遺作) | Daum 뉴스
http://v.media.daum.net/v/20170916100018804 安 '선명 야당'으로 국민의당, 몸값 높아졌는데..부메랑은 | Daum 뉴스
http://v.media.daum.net/v/20170916141922005 김이수 귀국 후 "표결 수용..맡은 바 소임 최선 다할 것"(종합) | Daum 뉴스
http://v.media.daum.net/v/20170916070107259 러, 파괴력 최대 '모든 폭탄 아버지' 사용 여부 진실공방 | Daum 뉴스
http://v.media.daum.net/v/20170916050303400 장제원 의원님! '스펙'이 그렇게 중요합니까? | Daum 뉴스
http://v.media.daum.net/v/20170916145844498 "소비 점진적 회복세..북핵·주택시장 규제는 걸림돌" | Daum 뉴스
http://v.media.daum.net/v/20170916141550973 "애플, '아이폰X' 한 대 팔 때 83만원 남겨..이익률 64%" | Daum 뉴스
http://v.media.daum.net/v/20170916152253742 [한국사의 안뜰] 양반·평민 함께한 마을계.. '나눔의 정' 300년을 이었다 | Daum 뉴스
http://v.media.daum.net/v/20170915105603331 '뉴스테이' 명칭 없애고 공공성 대폭 늘린다 | Daum 뉴스
http://v.media.daum.net/v/20170916153904951 대한항공, 美 휴스턴 노선 중단 검토 | Daum 뉴스
http://v.media.daum.net/v/20170916090013176 [오은석의부동산재테크]불확실한 시장에서 우량 물건을 잡는 방법 | Daum 뉴스
http://v.media.daum.net/v/20170916060308680 문 대통령, 北에 '재기불능'과 '대화복귀' 선택지 던졌다 | Daum 뉴스
http://v.media.daum.net/v/20170916044249309 선정적 코피노 캐릭터, 해도 너무한 게임 | Daum 뉴스
http://v.media.daum.net/v/20170916092937528 [단독]세월호 위성항법장치 GPS플로터, 사고 40분전 꺼졌다 | Daum 뉴스
http://v.media.daum.net/v/20170916050110377 "김명수까지 퇴짜 놓다간   호남서 민심역풍 불수도.. " | Daum 뉴스
http://v.media.daum.net/v/20170916154442038 [일문일답]교육부 "휴업 참여 사립유치원 징계 예외는 없다" | Daum 뉴스
http://v.media.daum.net/v/20170916070410344 비트코인 거품 논란 점입가경..튤립 파동과 다른 점은? | Daum 뉴스
http://v.media.daum.net/v/20170915185045320 끝내 中롯데마트 철수 결정한 롯데..8조원 투자한 中사업 '흔들'(종합) | Daum 뉴스
http://v.media.daum.net/v/20170916130031377 [양낙규의 Defence Club]EMP 서울상공서 터지면 어떻게 되나 | Daum 뉴스
http://v.media.daum.net/v/20170916134540719 [사진현장] 초조함, 기다림, 부르튼 발. 취업문 앞 청년들 | Daum 뉴스
http://v.media.daum.net/v/20170916143337144 [단독] '무도' 김태호PD "노조탈퇴 제안 받았지만 거절했다" | Daum 뉴스
http://v.media.daum.net/v/20170915174005771 제네시스 G70 "BMW 3보다 크고, 벤츠 C보다 세다" | Daum 뉴스
http://v.media.daum.net/v/20170916030222904 '윤종규 2기' KB금융, 신한과 금융 지존 가린다 | Daum 뉴스
http://v.media.daum.net/v/20170916070410344 비트코인 거품 논란 점입가경..튤립 파동과 다른 점은? | Daum 뉴스
http://v.media.daum.net/v/20170916110101442 "소비 점진적 회복세..북핵·주택시장 규제로 위축 우려" | Daum 뉴스
http://v.media.daum.net/v/20170916011537371 KB금융 회장 첫 연임 .. 윤종규, 노조와 갈등 풀어낼까 | Daum 뉴스
http://v.media.daum.net/v/20170915084258568 [단독]박근혜의 '뉴스테이' 국토부서 '아웃' | Daum 뉴스
http://v.media.daum.net/v/20170916150148531 교육부 "휴업 유치원, 지원금 회수·원비 환불·폐쇄 등 조치"(종합) | Daum 뉴스
http://v.media.daum.net/v/20170916010116289 [현장 속으로] 앞 거의 못 보는 소녀 VR기기 쓰자 "단발머리 .. 어, 우리 엄마?" | Daum 뉴스
http://v.media.daum.net/v/20170916143610179 [이슈플러스] '주인'은 없고 '깃발'만 나부끼는 보수의 몰락 | Daum 뉴스
http://v.media.daum.net/v/20170915161046048 코스피, 北도발에도 '굳건'..한달여만에 2,380선 재탈환(종합) | Daum 뉴스
http://v.media.daum.net/v/20170916124836295 "SK하이닉스, 도시바 의결권 15%..거부권은 없어" | Daum 뉴스
http://v.media.daum.net/v/20170916125043305 고립 속 '나홀로 육아'..비극 빚는 '주부 우울증' | Daum 뉴스
http://v.media.daum.net/v/20170915102957366 비트코인 '폭삭'.. 中거래소 중단에 투자자 이탈 | Daum 뉴스
http://v.media.daum.net/v/20170915232122548 中 비트코인 거래소 오케이코인·후오비 10월31일 폐쇄 | Daum 뉴스
http://v.media.daum.net/v/20170915171609085 [마감시황][종합]코스피, 北 미사일 도발에도 2380선 상승 마감 | Daum 뉴스
http://v.media.daum.net/v/20170916124836295 "SK하이닉스, 도시바 의결권 15%..거부권은 없어" | Daum 뉴스
http://v.media.daum.net/v/20170916050205389 [기획] '맷집' 생긴 증시.. 北 연이은 도발에도 '덤덤' | Daum 뉴스
http://v.media.daum.net/v/20170916050303400 장제원 의원님! '스펙'이 그렇게 중요합니까? | Daum 뉴스
http://v.media.daum.net/v/20170916044251311 '외풍' 막아낸 KB금융 이사진의 힘 | Daum 뉴스
http://v.media.daum.net/v/20170902140104281 [장은석 기자의 호갱 탈출] 숙박 앱 비회원도 예약 7일 이내엔 위약금 안 뗍니다 | Daum 뉴스
http://v.media.daum.net/v/20170916124836295 "SK하이닉스, 도시바 의결권 15%..거부권은 없어" | Daum 뉴스
http://v.media.daum.net/v/20170916044251311 '외풍' 막아낸 KB금융 이사진의 힘 | Daum 뉴스
http://v.media.daum.net/v/20170916125613346 사흘 만에 처음 입 연 '240번 버스 기사' | Daum 뉴스
http://v.media.daum.net/v/20170916144646338 與 "김문수, '文대통령은 김정은 기쁨조' 막말 사과해야" | Daum 뉴스
http://v.media.daum.net/v/20170916134540719 [사진현장] 초조함, 기다림, 부르튼 발. 취업문 앞 청년들 | Daum 뉴스
http://v.media.daum.net/v/20170826090025529 [오은석의 부동산 재테크]8.2 대책, 3~4년 뒤 집값은 폭등한다. | Daum 뉴스
http://v.media.daum.net/v/20170915174005771 제네시스 G70 "BMW 3보다 크고, 벤츠 C보다 세다" | Daum 뉴스
http://v.media.daum.net/v/20170916153558897 코스닥, 외국인 2116억원 순매수..671.30 마감 | Daum 뉴스
http://v.media.daum.net/v/20170916140103841 [장은석 기자의 호갱 탈출] 게임 아이템 날아갔는데 환불되나요 | Daum 뉴스
http://v.media.daum.net/v/20170916140103841 [장은석 기자의 호갱 탈출] 게임 아이템 날아갔는데 환불되나요 | Daum 뉴스
http://v.media.daum.net/v/20170916130508423 "늦은 추석 과일 맛도 최고"..기상여건 양호 덕분 | Daum 뉴스
http://v.media.daum.net/v/20170916125436333 갤노트8 첫날 20만대 개통..'떴다방식' 불법 보조금 등장 | Daum 뉴스
http://v.media.daum.net/v/20170916080104746 홧김에 창문 밖으로 후배 밀친 20대, 유족 합의 후 선처 | Daum 뉴스
http://v.media.daum.net/v/20170916110125448 [뉴스탐색] '240번 버스기사' 사건 최초유포자 사과 진정성 있나? | Daum 뉴스
http://v.media.daum.net/v/20170916140103841 [장은석 기자의 호갱 탈출] 게임 아이템 날아갔는데 환불되나요 | Daum 뉴스
http://v.media.daum.net/v/20170916141742991 박근혜 전 대통령 무죄 석방 서명운동 | Daum 뉴스
http://v.media.daum.net/v/20170916080014728 "같은 역에서 내리자" 지하철서 여고생 추행 60대 징역형 | Daum 뉴스
http://v.media.daum.net/v/20170916125401328 공무원 정년 연장하는 일본, 다른 나라들은 어떨까 | Daum 뉴스
http://v.media.daum.net/v/20170902090018632 [오은석의 부동산 재테크]전세 대란의 징조 | Daum 뉴스
http://v.media.daum.net/v/20170916124836295 "SK하이닉스, 도시바 의결권 15%..거부권은 없어" | Daum 뉴스
http://v.media.daum.net/v/20170916152253742 [한국사의 안뜰] 양반·평민 함께한 마을계.. '나눔의 정' 300년을 이었다 | Daum 뉴스
http://v.media.daum.net/v/20170916111912610 세월호 내부 영상 공개.. 침몰원인 밝혀질까 | Daum 뉴스
http://v.media.daum.net/v/20170915103230504 중국 최대 가상화폐거래소 업무 중단..비트코인 28% 급락 | Daum 뉴스
http://v.media.daum.net/v/20170915181329653 [현장+]제네시스 G70 출시 이례적 '금요일' 택한 속내 | Daum 뉴스
http://v.media.daum.net/v/20170915150747489 박근혜표 임대주택 '뉴스테이' 명칭 사라진다 | Daum 뉴스
http://v.media.daum.net/v/20170916152752789 신고리5·6호기 시민참여단 478명, 첫 오리엔테이션 참석(종합) | Daum 뉴스
http://v.media.daum.net/v/20170916135601809 "무책임한 잠적 황당"..'알바추노'에 속끓는 자영업자들 | Daum 뉴스
연습문제4
1. 네이버 실시간검색어 20개 추출하기
- Chrome 의 Copy Selector를 활용

X 참고코드: git 저장소에서 02_examples/crawling_naver_realtime_keyword.py 를 참고
- 프로그래밍은 스스로 작성을 해야 합니다. 정 이해하기 어려울 때만 참고코드를 보시면 좋을 것 같습니다.
import requests
from bs4 import BeautifulSoup

res = requests.get('https://www.naver.com/')
soup = BeautifulSoup(res.content, 'html.parser')

# a 태그이면서 href 속성 값이 특정한 값을 갖는 경우 탐색
link_title = soup.select([------------------------------------------])
for num in range(len(link_title)):
    [------------------------------------------]
    [------------------------------------------]

1 서현진
2 이건희
3 무한도전
4 태풍 독수리
5 황금빛내인생
6 청년경찰
7 보그맘
8 그것이 알고싶다
9 아는형님
10 소사이어티 게임 2
11 롤챔스 승강전
12 롯데시네마
13 메가박스
14 편성표
15 프로야구중계
16 태풍경로
17 스팀
18 테일즈런너
19 cj채용
20 아프리카티비
흥미로운 예제
1. slack 메세지로 만들어보는 부동산 뉴스 (과제로 해당 코드를 설명해서 공유드리겠습니다.)
from bs4 import BeautifulSoup
import datetime
import json

random_url = 'https://hooks.slack.com/services/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'
res = requests.get('http://www.drapt.com/e_sale/index.htm?page_name=esale_news&menu_key=34')
soup = BeautifulSoup(res.content, 'html.parser')

link_titles = soup.find_all('a', class_='c0000000')
link_dates = soup.find_all('span', class_='ffth fs11 c807f7f')
today_date = datetime.date.today()
today_message = '오늘의 부동산 뉴스 [%s]' % str(today_date)
payload = {'text': today_message}
estate_info_message = json.dumps(payload)
requests.post(random_url, data=estate_info_message)

for num, link_title in enumerate(link_titles):
    if str(today_date) == link_dates[num].get_text():
        # estate_info = '<a herf=\"http://www.drapt.com/e_sale/%s\">%s</a>' % (link_title['href'], link_title.get_text())
        # Reference for creating a link: https://api.slack.com/incoming-webhooks
        estate_info = '%d] <http://www.drapt.com/e_sale/%s|%s>' % (num + 1, link_title['href'], link_title.get_text())
        payload = {'text': estate_info}
        estate_info_message = json.dumps(payload)
        requests.post(random_url, data=estate_info_message)