ABOUT ME

IT와 컴퓨터 관련 팁, 파이썬 등과 아파트 정보, 일상적인 경험 등의 생활 정보를 정리해서 올리는 개인 블로그

  • 다음 뉴스 기사 제목 본문 크롤링 후 텍스트 저장
    코딩 연습/파이썬 크롤링 2022. 6. 1. 12:53
    반응형

    [파이썬 크롤링] 네이버 지식인에 올라온 질문 '다음 랭킹 뉴스 기사 제목 본문 크롤링 후 텍스트 파일에 저장하는 법'에 대해 파이썬으로 작성해보았다.

     

     

    다음 랭킹 뉴스 기사 제목, 본문 크롤링 후 텍스트 파일로 저장

     

    [파이썬 소스 코드]

    import requests
    from bs4 import BeautifulSoup
    import os
    
    
    def daum_news():
    
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}
        url = f'https://news.daum.net/'
    
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            # print(response.text)
            soup = BeautifulSoup(response.text, 'html.parser')
            lis = soup.find('ul', class_='list_newsissue').find_all('li')
            print(len(lis))  # 20
    
            for li in lis:
                a_tag = li.select_one('div > div > strong > a')['href']
                title = li.select_one('div > div > strong > a').text.strip().replace('  ', '')
                print(a_tag, title)
    
                res = requests.get(a_tag, headers=headers)
                soup2 = BeautifulSoup(res.text, 'html.parser')
                summary = ''
                content = ''
                try:
                    summary = soup2.find('strong', {'class': 'summary_view'}).text.strip()
                    print(summary)
                except:
                    summary = '요약 없음'
                    pass
                try:
                    content = soup2.find('div', id='harmonyContainer').text.strip()
                    print(content)
                except:
                    content = "기사 본문 없음"
                    continue
                
                contents = '[기사 제목] ' + title + '\n\n' + summary + '\n\n' + content
    
                ## 기사 내용 저장
                folder_name = f'./daum_news'
                file_name = title[:15].strip()
    
                # 파일명에서 특수문자 제거
                special_char = '\/:*?"<>|'
                for c in special_char:
                    if c in file_name:
                        file_name = file_name.replace(c, 'x')
    
                if not os.path.exists(folder_name):
                    os.makedirs(folder_name)
    
                with open(folder_name + '/' + file_name + '.txt', 'w', encoding='utf-8') as f:
                    f.write(contents)
    
                # break
        else :
            print(response.status_code)
    
    daum_news()

    저장할 폴더를 'daum_news'로 만들고 파일명은 기사 제목에서 15자까지 추출하여 사용하며, 제목에 특수문자가 있을 경우 저장이 안되는 오류를 방지하기 위해 특수문자를 제거해서 처리함

     

    good4me.co.kr

     

    [실행 결과]

    20
    https://v.daum.net/v/20220601124604173 지상파 "대선 때 정확성 봤지? 이번 개표방송은 더 정확하게!"
    [6.1 지방선거]MBC, KBS, SBS 선거개표 방송 경쟁M "출구서 당선확률", 
    K "AR존 운영" S "3면+LED월"
    한국방송 제공
    
    
    선거날만 되면 방송사들은 또 다른 선거를 치른다. 바로 개표방송 대결. 플랫폼이 다양해면서 시청자를 붙들려는 방송사의 경쟁도 더욱 치열해 
    지고 있다. 방송사들은 8~9개월 전부터 선거방송기획팀을 조직해 프로그
    램 구성에서 그래픽(CG)까지 모든 것을 체계적으로 준비한다. <에스비에
    스>가 2017년 대통령 선거 때 미국드라마 <왕좌의 게임>에서 아이디어를
     얻은 결과물이 화제를 모은 뒤부터는 개표방송에 거는 시청자의 기대도
     점점 높아지고 있다.
    오늘(1일) 실시된 ‘제8회 전국동시 지방선거’ 개표방송은 지난 대선에  
    이은 방송사들의 2차전이다. 이재명·안철수 전 대선 후보가 출마하는 등
     여느 때보다 관심이 높아서 방송사들도 특히 공을 들였다.
    이번 선거방송을 요약하자면 3사 모두 “정확성에 대한 자신”을 강조하고
     있다. <문화방송>(MBC)은 “정통”, <한국방송>(KBS)는 “명품”, <에스비 
    에스>(SBS)는 “신박함”으로 구분 짓는 차이는 있지만, 지난 대선 때보다
    도 “더 빠르고 정확해졌다”고 입을 모은다. 지난 대선 때 인정받은 지상
    파 출구조사의 정확성과 신뢰성을 이번 선거방송에서 활용한 듯하다. < 
    문화방송> 쪽은 “지난 3월9일 진행된 대통령 선거방송 이후 3개월이 채 
    안 되는 짧은 기간 동안 역량을 총동원했다”고 말했다.
    
    .
    .

     

     

     

    반응형
Designed by goodthings4me.