728x90
다음 뉴스에서 본문, 댓글 크롤링하기¶
In [9]:
import requests
from bs4 import BeautifulSoup
import json
In [2]:
def get_daum_news_title(new_id):
url = 'https://news.v.daum.net/v/{}'.format(new_id)
resp = requests.get(url)
soup = BeautifulSoup(resp.text)
title_tag = soup.select_one('h3.tit_view')
if title_tag:
return title_tag.get_text()
return ""
In [3]:
get_daum_news_title(20210730101735040)
Out[3]:
'"\'흙수저\' 카카오 김범수, 이재용 등 재벌 제치고 한국 최고 부자"'
뉴스 본문 크롤링¶
In [4]:
# def get_daum_news_article(new_id):
# url = 'https://news.v.daum.net/v/{}'.format(new_id)
# resp = requests.get(url)
# soup = BeautifulSoup(resp.text)
# title_tag = soup.select_one('div#harmonyContainer')
# if title_tag:
# return title_tag.get_text()
# return ""
def get_daum_news_article(new_id):
url = 'https://news.v.daum.net/v/{}'.format(new_id)
resp = requests.get(url)
soup = BeautifulSoup(resp.text)
content = ''
for p in soup.select('div#harmonyContainer p'):
content += p.get_text()
return content
In [5]:
get_daum_news_article(20210730101735040)
Out[5]:
'[서울=뉴시스] 이진영 기자 = 카카오 창업자 김범수(55) 의장이 이재용(53) 삼성전자 부회장을 제치고 한국 최고 부자에 등극했다.30일 카카오에 따르면 김 의장은 최근 블룸버그 억만장자지수 분석에서 순자산이 134억 달러(약 15조4000억원)로 한국인 가운데 최고 부자에 올랐다. 카카오 측은 "김 의장 자산은 대부분이 주식인데 블룸버그 측에서 최근 자산 규모에 대해 확인 요청을 해왔다"며 "담보 지분 등을 제외하고 자체 계산 기준에 따라 비교해 보도가 나온 것으로 보인다"고 말했다. 특히 그간 한국 최고 부자로 꼽힌 이재용 삼성전자 부회장(121억 달러: 13조9000억원)을 제쳐 눈에 띈다. 수십년 동안 한국 경제를 지배해온 재벌 총수들을 부자 순위에서 따돌리고 1위 자리에 오른 것이다. 이번 순위는 그가 국내 자수성가한 창업자 중에서도 손꼽히는 흙수저 출신이라는 점에서 더욱 조명을 받고 있다. 그의 아버지는 막노동과 목공일을, 어머니는 식당일을 해가며 그를 키웠다. 한때는 할머니를 포함해 여덟 식구가 단칸방에서 살았을 정도로 형편이 넉넉지 않았다. 집안 남매 5명 중 유일하게 대학을 나온 김 의장은 서울대 산업공학과를 졸업한 후 한게임을 창업한 것을 시작으로 잇따라 도전에 나서다가 2007년 카카오의 전신 \'아이위랩\'을 세웠다. 그후 4년 뒤 \'국민 메신저\'인 카카오톡으로 대박을 쳤다. 메신저을 기반으로 핀테크, 모빌리티, 게임, 인공지능, 블록체인 등 전방위적으로 사업을 확대하며 주가는 고공행진을 하고 있다. 그는 사업뿐 아니라 기부에도 적극적이어서 더욱 긍정적인 평가를 받고 있다. 그는 올 초 재산의 절반을 사회문제 해결을 위해 생전에 기부한다는 뜻을 밝힌 바 있다. 당시 자산이 10조원 정도로 알려져 기부 규모는 5조원 정도로 예상됐으나 그가 보유한 주식이 이후에도 계속 가파르게 상승하면서 기부 규모도 덩달아 뛸 것으로 관측된다. 지난 3월에는 마이크로소프트(MS) 창업자인 빌 게이츠와 워런 버핏 버크셔해서웨이 회장이 2010년 재산의 사회 환원을 서약하며 설립한 \'더기빙플레지\'(The Giving Pledge)의 220번째 기부자로 이름을 올리며 기부 의지를 더욱 굳건히 하기도 했다. 6월 1일에는 기부를 위한 재단법인 브라이언임팩트를 출범시켰다.☞공감언론 뉴시스 mint@newsis.com ⓒ 공감언론 뉴시스통신사. 무단전재-재배포 금지'
뉴스 댓글 크롤링하기¶
In [10]:
url = 'https://comment.daum.net/apis/v1/posts/158990945/comments?parentId=0&offset=3&limit=10&sort=POPULAR&isInitial=false&hasNext=true&randomSeed=1627615796'
headers = {
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb3J1bV9rZXkiOiJuZXdzIiwiZ3JhbnRfdHlwZSI6ImFsZXhfY3JlZGVudGlhbHMiLCJzY29wZSI6W10sImV4cCI6MTYyNzY1NzkzMCwiYXV0aG9yaXRpZXMiOlsiUk9MRV9DTElFTlQiXSwianRpIjoiZDg5ZDg3YTYtNjFiOC00NDNiLWIwYzAtZjI2M2IyZTU3ZmNmIiwiZm9ydW1faWQiOi05OSwiY2xpZW50X2lkIjoiMjZCWEF2S255NVdGNVowOWxyNWs3N1k4In0.ubWcZBhW4SWefre3jGEroMtv4A_i2Sfy9BXk4MqXyA4',
'Origin': 'https://news.v.daum.net',
'Referer': 'https://news.v.daum.net/v/20210730101735040',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'
}
resp = requests.get(url, headers=headers)
resp.json()
Out[10]:
[{'id': 690984997, 'userId': -878045, 'postId': 158990945, 'forumId': -99, 'parentId': 0, 'type': 'COMMENT', 'status': 'S', 'flags': 256, 'rating': 0, 'content': '기부도 많이 하시는거로 알고있는데, 대단하시네요. 흙수저의 희망ㅎㅎ', 'createdAt': '2021-07-30T10:20:06+0900', 'updatedAt': '2021-07-30T10:20:06+0900', 'childCount': 4, 'likeCount': 494, 'dislikeCount': 41, 'recommendCount': 453, 'screenedByKeeper': False, 'user': {'id': -878045, 'status': 'S', 'type': 'USER', 'flags': 0, 'icon': 'https://t1.daumcdn.net/profile/h5cX1oSFbNA0', 'url': '', 'username': 'DAUM:3Gq1', 'roles': 'ROLE_USER,ROLE_DAUM,ROLE_IDENTIFIED', 'providerId': 'DAUM', 'providerUserId': '3Gq1', 'displayName': '_밍토_', 'description': '', 'commentCount': 1647}}, {'id': 690986250, 'userId': 17642401, 'postId': 158990945, 'forumId': -99, 'parentId': 0, 'type': 'COMMENT', 'status': 'S', 'flags': 256, 'rating': 0, 'content': '굿', 'createdAt': '2021-07-30T10:22:35+0900', 'updatedAt': '2021-07-30T10:22:35+0900', 'childCount': 1, 'likeCount': 76, 'dislikeCount': 8, 'recommendCount': 68, 'screenedByKeeper': False, 'user': {'id': 17642401, 'status': 'S', 'type': 'USER', 'flags': 0, 'icon': 'https://t1.daumcdn.net/profile/59L9lDwSKRg0', 'url': '', 'username': 'DAUM:CQHOI', 'roles': 'ROLE_USER,ROLE_DAUM,ROLE_IDENTIFIED', 'providerId': 'DAUM', 'providerUserId': 'CQHOI', 'displayName': '닉네임을 등록해 주세요', 'description': '', 'commentCount': 75}}, {'id': 690985088, 'userId': -18115175, 'postId': 158990945, 'forumId': -99, 'parentId': 0, 'type': 'COMMENT', 'status': 'S', 'flags': 256, 'rating': 0, 'content': '대단', 'createdAt': '2021-07-30T10:20:16+0900', 'updatedAt': '2021-07-30T10:20:16+0900', 'childCount': 0, 'likeCount': 137, 'dislikeCount': 2, 'recommendCount': 135, 'screenedByKeeper': False, 'user': {'id': -18115175, 'status': 'S', 'type': 'USER', 'flags': 0, 'icon': 'https://t1.daumcdn.net/profile/Ggf6jg9Fa.k0', 'url': '', 'username': 'DAUM:1e0Af', 'roles': 'ROLE_USER,ROLE_DAUM,ROLE_IDENTIFIED', 'providerId': 'DAUM', 'providerUserId': '1e0Af', 'displayName': 'zabes', 'description': '', 'commentCount': 27}}, {'id': 690985556, 'userId': -18886493, 'postId': 158990945, 'forumId': -99, 'parentId': 0, 'type': 'COMMENT', 'status': 'S', 'flags': 256, 'rating': 0, 'content': '21세기 정주영?', 'createdAt': '2021-07-30T10:21:11+0900', 'updatedAt': '2021-07-30T10:21:11+0900', 'childCount': 2, 'likeCount': 87, 'dislikeCount': 21, 'recommendCount': 66, 'screenedByKeeper': False, 'user': {'id': -18886493, 'status': 'S', 'type': 'USER', 'flags': 0, 'icon': 'https://t1.daumcdn.net/profile/PfxAFUXZIBM0', 'url': '', 'username': 'DAUM:1hfeR', 'roles': 'ROLE_USER,ROLE_DAUM,ROLE_IDENTIFIED', 'providerId': 'DAUM', 'providerUserId': '1hfeR', 'displayName': '본향', 'description': '', 'commentCount': 118}}, {'id': 690985534, 'userId': 61214483, 'postId': 158990945, 'forumId': -99, 'parentId': 0, 'type': 'COMMENT', 'status': 'S', 'flags': 256, 'rating': 0, 'content': '대댠합니다 기부도 많이 하신다는데 굿', 'createdAt': '2021-07-30T10:21:08+0900', 'updatedAt': '2021-07-30T10:21:08+0900', 'childCount': 2, 'likeCount': 351, 'dislikeCount': 37, 'recommendCount': 314, 'screenedByKeeper': False, 'user': {'id': 61214483, 'status': 'S', 'type': 'USER', 'flags': 0, 'icon': 'https://t1.daumcdn.net/profile/dp8GJoXtUFI0', 'username': 'DAUM:E4hPy', 'roles': 'ROLE_USER,ROLE_DAUM,ROLE_IDENTIFIED', 'providerId': 'DAUM', 'providerUserId': 'E4hPy', 'displayName': '김형성', 'description': '', 'commentCount': 86}}, {'id': 690985457, 'userId': 27683237, 'postId': 158990945, 'forumId': -99, 'parentId': 0, 'type': 'COMMENT', 'status': 'S', 'flags': 256, 'rating': 0, 'content': 'korean dream 축하합니다', 'createdAt': '2021-07-30T10:21:00+0900', 'updatedAt': '2021-07-30T10:21:00+0900', 'childCount': 0, 'likeCount': 161, 'dislikeCount': 16, 'recommendCount': 145, 'screenedByKeeper': False, 'user': {'id': 27683237, 'status': 'S', 'type': 'USER', 'flags': 0, 'icon': 'https://t1.daumcdn.net/profile/1fEmfNrWzX10', 'url': '', 'username': 'DAUM:A9Pwt', 'roles': 'ROLE_USER,ROLE_DAUM,ROLE_IDENTIFIED', 'providerId': 'DAUM', 'providerUserId': 'A9Pwt', 'displayName': 'Kevin', 'description': '', 'commentCount': 1571}}, {'id': 690986244, 'userId': 12952293, 'postId': 158990945, 'forumId': -99, 'parentId': 0, 'type': 'COMMENT', 'status': 'S', 'flags': 256, 'rating': 0, 'content': '흑수저 언론 하나 키워 주세여~', 'createdAt': '2021-07-30T10:22:34+0900', 'updatedAt': '2021-07-30T10:22:34+0900', 'childCount': 2, 'likeCount': 188, 'dislikeCount': 9, 'recommendCount': 179, 'screenedByKeeper': False, 'user': {'id': 12952293, 'status': 'S', 'type': 'USER', 'flags': 0, 'icon': 'https://t1.daumcdn.net/profile/vuUY8SkaLgw0', 'url': '', 'username': 'DAUM:C7BFA', 'roles': 'ROLE_USER,ROLE_DAUM,ROLE_IDENTIFIED', 'providerId': 'DAUM', 'providerUserId': 'C7BFA', 'displayName': '멀더', 'description': '', 'commentCount': 2053}}, {'id': 690985377, 'userId': -53443975, 'postId': 158990945, 'forumId': -99, 'parentId': 0, 'type': 'COMMENT', 'status': 'S', 'flags': 256, 'rating': 0, 'content': '노력의 결정체 대한민국의 자랑', 'createdAt': '2021-07-30T10:20:50+0900', 'updatedAt': '2021-07-30T10:20:50+0900', 'childCount': 2, 'likeCount': 255, 'dislikeCount': 38, 'recommendCount': 217, 'screenedByKeeper': False, 'user': {'id': -53443975, 'status': 'S', 'type': 'USER', 'flags': 0, 'icon': 'https://t1.daumcdn.net/profile/dkH_Zse2.TQ0', 'url': '', 'username': 'DAUM:3CfdB', 'roles': 'ROLE_USER,ROLE_DAUM,ROLE_IDENTIFIED', 'providerId': 'DAUM', 'providerUserId': '3CfdB', 'displayName': '강사랑', 'description': '', 'commentCount': 5841}}, {'id': 690986496, 'userId': -120735653, 'postId': 158990945, 'forumId': -99, 'parentId': 0, 'type': 'COMMENT', 'status': 'S', 'flags': 256, 'rating': 0, 'content': '계속 축복의 통로가 되어 주시길 바랍니다.', 'createdAt': '2021-07-30T10:23:04+0900', 'updatedAt': '2021-07-30T10:23:04+0900', 'childCount': 1, 'likeCount': 163, 'dislikeCount': 22, 'recommendCount': 141, 'screenedByKeeper': False, 'user': {'id': -120735653, 'status': 'S', 'type': 'USER', 'flags': 0, 'icon': 'https://t1.daumcdn.net/profile/s5f.1G8C_AQ0', 'url': '', 'username': 'DAUM:8aARf', 'roles': 'ROLE_USER,ROLE_DAUM,ROLE_IDENTIFIED', 'providerId': 'DAUM', 'providerUserId': '8aARf', 'displayName': '김리차드', 'description': '', 'commentCount': 17}}, {'id': 690986911, 'userId': -1099341, 'postId': 158990945, 'forumId': -99, 'parentId': 0, 'type': 'COMMENT', 'status': 'S', 'flags': 256, 'rating': 0, 'content': '기부의 본보기 흙수저 본보기 응원합니다', 'createdAt': '2021-07-30T10:23:52+0900', 'updatedAt': '2021-07-30T10:23:52+0900', 'childCount': 1, 'likeCount': 395, 'dislikeCount': 24, 'recommendCount': 371, 'screenedByKeeper': False, 'user': {'id': -1099341, 'status': 'S', 'type': 'USER', 'flags': 0, 'icon': 'https://t1.daumcdn.net/profile/.LD-k-GqvBo0', 'url': '', 'username': 'DAUM:4BZj', 'roles': 'ROLE_USER,ROLE_DAUM,ROLE_IDENTIFIED', 'providerId': 'DAUM', 'providerUserId': '4BZj', 'displayName': '이른봄', 'description': '', 'commentCount': 60}}]
In [21]:
def get_daum_new_comment(news_id):
headers = {
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb3J1bV9rZXkiOiJuZXdzIiwiZ3JhbnRfdHlwZSI6ImFsZXhfY3JlZGVudGlhbHMiLCJzY29wZSI6W10sImV4cCI6MTYyNzY1NzkzMCwiYXV0aG9yaXRpZXMiOlsiUk9MRV9DTElFTlQiXSwianRpIjoiZDg5ZDg3YTYtNjFiOC00NDNiLWIwYzAtZjI2M2IyZTU3ZmNmIiwiZm9ydW1faWQiOi05OSwiY2xpZW50X2lkIjoiMjZCWEF2S255NVdGNVowOWxyNWs3N1k4In0.ubWcZBhW4SWefre3jGEroMtv4A_i2Sfy9BXk4MqXyA4',
'Origin': 'https://news.v.daum.net',
'Referer': 'https://news.v.daum.net/v/20210730101735040',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'
}
url_template = 'https://comment.daum.net/apis/v1/posts/{}/comments?parentId=0&offset={}&limit=10&sort=POPULAR&isInitial=false&hasNext=true&randomSeed=1627615796'
offset = 0
comments = []
while True:
url = url_template.format(news_id, offset)
resp = requests.get(url, headers=headers)
data = resp.json()
if not data:
break
comments.extend(data)
offset += 10
return comments
In [23]:
len(get_daum_new_comment(158990945))
Out[23]:
14
In [ ]:
728x90
반응형
'AI > K-Digital Training' 카테고리의 다른 글
010. 네이버 증권에서 달러 환율과 내 주식 데이터 크롤링 (0) | 2021.08.06 |
---|---|
009. 네이버 금융에서 원자재 시세 데이터 크롤링하기 (0) | 2021.08.05 |
007. 로그인 후 웹크롤링 및 셀레니움 활용 웹크롤링 (0) | 2021.08.03 |
006. BeautifulSoup으로 웹크롤링 학습2 (0) | 2021.08.02 |
005. BeautifulSoup으로 웹크롤링 학습1 (0) | 2021.08.01 |