□ 크롤링 대상
○ 언론사
○ 카테고리
○ 기사제목
○ 기사제목 안에 있는 상세페이지 링크 주소
#라이브러리 호출
import requests
from bs4 import BeautifulSoup
#크롤링 사이트 설정
target_url = 'https://news.daum.net/'
#데이터 request 및 get. get한 데이터를 html.paser로 분리
req_data_area = requests.get(target_url, headers = headers)
html_raw_data = req_data_area.text #해당영역에 있는 모든 텍스트 데이터 저장
html_raw_data_parsing = BeautifulSoup(html_raw_data, 'html.parser')
#클래스 이름이 cont_thumb 인것 추출
count_thumb = html_raw_data_parsing.select('.cont_thumb')
for index, v in enumerate(count_thumb):
index += 1
for i in v.select('.logo_cp'): #.cont_thumb 클래스 네임을 가진 태그에 포함된 logo_cp 클래스 네임을 가진 값 반복문
#예외처리 구문 v.select_one('img')['alt'] 값이 NONE으로 발생되는 TypeError시 값을 -으로 채움
try:
news_cmp = v.select_one('img')['alt']
except TypeError:
news_cmp = '-'
for c in v.select('.txt_category'):
news_category = c.string #카테고리에 텍스트가 정확히 있기 떄문에 string 사용
for t in v.select('.tit_g'):
news_sm_title = t.select_one('.link_txt').string.strip() #.tit_g 네임을 가진 태그안에 .link_txt를 클래스네임으로 가진 태그의 값을 가져온 후 공백제거
news_title_link = t.select_one('a')['href'] #.tit_g 네임을 가진 태그안에 포함된 하위태그 a태그의 href 속성값 추출
print('\n')
print(f'□ {index} 번째 기사\n\t - 출처 : {news_cmp}\n\t - 카테고리 : {news_category}\n\t - 제목 : {news_sm_title}\n\t - 기사링크 : {news_title_link}')
'Python > Python_Crawling' 카테고리의 다른 글
CGV 무비차트 크롤링 (1) | 2024.02.11 |
---|---|
SSG 이벤트 크롤링 : select, find_all(string=True) (1) | 2024.02.09 |
.text 와 .string 차이점(보완) (0) | 2024.02.02 |
크롤링 : 멜론 (0) | 2024.02.02 |
네이버 뷰 크롤링 : 제목, 작성자, 링크 + 예외처리 (1) | 2024.01.30 |