교육과정/chatGPT API로 AI 서비스 개발하기
[18] 쇼츠 대본 생성기 - 크롤러 개발
퍼펭스쿨
2023. 10. 24. 00:00
들어가며
이번 챕터에서는 쇼츠 소재로 사용할 뉴스 기사 URL이 주어지면 본문을 읽어오는 간단한 크롤러를 개발해보겠습니다. jupyter notebook을 열고 천천히 따라와주세요!
사용할 뉴스 기사 출처
네이버 연예 뉴스에서 쇼츠의 소재로 사용할 기사를 가져오겠습니다.
최신 뉴스 탭으로 이동해보면 쇼츠 소재로 사용할 만한 먹잇감🍖들이 보입니다. 기사를 하나 선택해보겠습니다.
뉴스 본문으로 이동해서 우클릭 한 다음, 검사를 눌러보겠습니다.
네이버 연예 뉴스의 본문은 articleBody라는 id 값을 가진 <div> 태그 안에 들어있습니다. 이를 이용해서 이제 뉴스 기사 URL이 주어지면 뉴스 본문을 크롤링하는 코드를 작성해보겠습니다.
네이버 연예뉴스 크롤링
라이브러리 설치
먼저 웹페이지를 요청하는 데에는 python requests, 응답으로 내려받은 html 문서를 파싱하는 데에는 BeautifulSoup, lxml 이라는 라이브러리를 사용하겠습니다.
$ pip install requests beautifulsoup4 lxml
웹 페이지 요청
requests를 이용해서 네이버 연예뉴스 URL에 요청을 날려보겠습니다. response.text를 출력해보면 다운받은 html 문서를 확인할 수 있습니다.
import requests
url = "https://entertain.naver.com/ranking/read?oid=117&aid=0003780065"
response = requests.get(url)
print(response.text)
>>
<!DOCTYPE html>
<html lang="ko">
<head>
<title id="browse_title">BTS 정국, 美 빌보드 차트 강타 :: 네이버 TV연예</title>
...
뉴스 본문 파싱
이제 beautifulsoup를 이용해서 html 문서에서 기사 본문만 파싱해보겠습니다.
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, "lxml")
article = soup.find("div", id="articeBody").text
print(article)
>>
정국. 빅히트뮤직방탄소년단 정국이 미국 빌보드 차트를 강타했다.10일(현지시간) 미국 음악 전문 매체 빌보드가 발표한 최신 차트(10월 14일 자)에 따르면, 방탄소년단 정국의 두 번째 솔로 싱글 ‘3D (feat. Jack Harlow)’가 메인 송차트 ‘핫 100’에서 5위에 올랐다. 정국의 첫 번째 싱글 ‘Seven (feat. Latto)’은 57위로 12주 연속 ‘핫 100’ 차트인했다.특히, 정국은 지난해 슈가가 프로듀싱한 하이브 오리지널 스토리 ‘7FATES: CHAKHO’의 OST ‘Stay Alive’ (Prod. SUGA of BTS)’와 찰리 푸스와의 협업곡 ‘Lefe and Right’, 올해 ‘Seven’과 ‘3D’ 등 통산 4개의 솔로 곡을 ‘핫 100’에 올렸다. 정국은 특히, 한국 솔로 아티스트로는 최초로 두 개 이상의 노래를 공개와 동시에 이 차트의 ‘톱 5’에 진입시킨 가수가 됐다.‘3D’는 ‘디지털 송 세일즈’, ‘글로벌 200’, ‘글로벌(미국 제외)’에서 각각 1위에 올랐고, ‘스트리밍 송’ 12위, ‘팝 에어플레이’ 34위 등 여러 차트에 포진했다.‘Seven’도 꾸준히 인기몰이 중이다. 이 곡은 ‘글로벌(미국 제외)’ 2위, ‘글로벌 200’ 3위에 이름을 올리며 ‘3D’와 쌍끌이 흥행을 이끌고 있다.뷔의 솔로 앨범 ‘Layover’는 메인 앨범차트 ‘빌보드 200’에서 70위로 4주 연속 차트인한 것을 비롯해 ‘톱 커런트 앨범’ 6위, ‘톱 앨범 세일즈’ 10위에 올랐다. 이 앨범의 타이틀곡 ‘Slow Dancing’은 ‘글로벌(미국 제외)’ 20위, ‘글로벌 200’ 36위에 자리했다.지민 솔로 앨범 ‘FACE’의 타이틀곡 ‘Like Crazy’는 ‘글로벌(미국 제외)’ 48위, ‘글로벌 200’ 77위에 랭크됐으며, 제이홉의 솔로 앨범 ‘Jack In The Box’는 ‘톱 커런트 앨범’ 41위, ‘톱 앨범 세일즈’ 57위에 랭크됐다.김도곤 온라인기자 kim2010@kyunghyang.com
마치며
여기까지 네이버 연예 뉴스 URL이 주어지면 뉴스 기사 본문을 파싱해오는 크롤러를 개발해봤습니다. 웹 페이지마다 구조가 다르기 때문에 다른 출처의 뉴스들도 활용하고 싶다면 비슷하게 검사를 눌러서 html 문서의 구조를 파악하고, 요청을 보내어 수집한 다음 파싱하면 됩니다.