ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Newspaper] 파이썬으로 뉴스 데이터를 크롤링을 할 수 있는 Newspaper 패키지
    Python/크롤링 2023. 3. 27. 09:42
    반응형

    파이썬으로 뉴스 데이터를 크롤링을 할 수 있는 Newspaper 패키지


    파이썬(Python)으로 웹 크롤링(Web Crawling)을 하기 위해서 대부분 셀레니움(Selenium)이나 뷰티풀수프(BeautifulSoup)이라는 패키지를 사용하는 편입니다. 셀레니움은 흔히 말하는 동적 크롤링(상호작용을 하는 웹페이지를 크롤링할 때 효과적)이며, 뷰티풀수프는 정적 크롤링(HTML 코드를 파싱해서 크롤링하는 방식)의 대표적인 패키지죠. 하지만, 특정한 양식을 가지고 있는 웹사이트의 경우에는 조금 더 짧은 코드로 편하게 크롤링을 할 수 있게끔 패키지가 마련되어 있습니다. 어차피 있는 패키지는 활용하지 않으면 손해죠.

    그래서, 이번에 살펴볼 패키지는 파이썬을 이용해서 뉴스와 같은 형식의 데이터를 크롤링할 수 있는 뉴스페이퍼(Newspaper)라는 패키지를 살펴보려 합니다. 한번 써 보니까, 국내 언론사 크롤링에도 문제가 없고, 심지어는 언론사 홈페이지가 아닌 다른 사이트에서도 쓸 수 있는 케이스가 있었습니다. 만약 웹 크롤링이 필요한 상황이지만, 파이썬 실력이 모자라다거나 하는 이유로 인해서 좌절하고 있다면, 뉴스페이퍼 패키지를 이용해서 도전해 보는건 어떨까요?

    패키지 설치

    뉴스페이퍼 패키지는 불러올 때의 이름과 설치할 때의 이름이 다릅니다. 버전 업데이트 중에서 패키지의 이름이 달라지는 일은 종종 있는 편이죠. 만약 패키지의 이름이 설치할 때의 이름과 매치가 되지 않는 경우에는, 패키지의 공식 설명 문서를 참고해 보시면 좋습니다. 참고료, 현재 뉴스페이퍼 패키지의 공식 이름은 Newspaper3k예요. 그리고, 설치 방법은 공식 문서( https://newspaper.readthedocs.io/en/latest/ )를 참고해 주세요. 귀찮다면, 프롬프트 창에 pip install newspaper3k라고 입력해 주기만 하면 됩니다.

    패키지 이용

    뉴스페이퍼 패키지는 대부분의 파이썬 웹 크롤링 작업에서 Article이라는 모듈만 사용합니다. 저도 이 이외의 모듈은 잘 써보질 않았는데요, 이번에는 Article 모듈을 이용해서 언론사 기사를 크롤링하는 간단한 작업을 해 보겠습니다. 파이썬을 연 뒤, from newspaper import Article이라고 입력하고, 뉴스 기사의 링크와 언어를 지정해 주는 것부터 시작입니다. 저는 최근에 올라온 반도체 관련 기사를 크롤링해 보겠습니다.

    설치된 파이썬, 패키지 버전

    • Python 3.9.13
    • newspaper3k 0.2.8
    from newspaper import Article # 패키지 불러오기
    
    link = 'https://view.asiae.co.kr/article/2023032217473512545?utm_source=newsstand.naver.com&utm_medium=referral&utm_campaign=top6' # 뉴스 기사 URL
    article = Article(link, language = 'ko') # URL과 언어를 입력


    이렇게만 하면, 뉴스페이퍼 패키지를 쓸 준비는 모두 끝났습니다. 페이지 레이아웃이나 소스코드를 확인하는 작업은 전혀 필요 없고요, download 함수만 실행해 주면 됩니다. 이후에는 parse 함수를 실행해 내용을 파싱해 주고, 제목과 본문, 필요하다면 날짜까지 불러오기만 하면 됩니다. 지금까지 써 왔던 크롤링 관련 패키지 중에서는 가장 간단한 사용법이네요.

    article.download()
    article.parse()
    title = article.title
    text = article.text
    date = article.publish_date


    이제, 제목과 본문, 발행 날짜를 각각 뉴스페이퍼 패키지가 알아서 파싱을 한 결과가 각각 title과 text, date에 저장되었습니다. 여기서 date를 제외한 모든 자료는 사용자가 쓰기 편하게 문자열로 저장되어 있기 때문에, 단순하게 print 함수를 써서 확인을 해 보거나, 따로 파일을 내보내는 등의 활용을 할 수 있습니다. date의 경우, datetime 자료형으로 반환되기 때문에, 날짜 계산을 하거나, 문자열로 내보내는 등의 작업을 진행할 수 있습니다.

    print(title)
    '반도체' 빠지니 드러난 韓기업 민낯…1분기 실적 '어닝 쇼크' 수준
    print(text[:100])
    삼성전자 반도체 부문-하이닉스, 3조~4조대 적자 전망
    
    매출 상위 10위권 중 6개 기업 영업이익 큰 폭 감소
    
    고강도 긴축과 경기 침체 등으로 올해 1분기 국내 주요 상장사가 
    print(date)
    2023-03-24 06:40:00


    파이썬의 뉴스페이퍼 패키지는 셀레니움이나 뷰티풀수프와는 비교도 안될 정도로 간단합니다. 물론, 그만큼 세세한 크롤링에는 제약이 있는 편입니다만, 만약 이 패키지를 쓰는걸 고려하고 있는 분들이라면 제한된 형식의 웹페이지 자료를 최대한 간편하게 크롤링하고 싶은 분들이기 때문에 특별한 문제는 없을 것 같습니다. 저도 웹 크롤링을 할 수는 있지만, 남한테 가르쳐주거나 제목-본문 구성의 자료를 크롤링할 경우에는 뉴스페이퍼 패키지를 최우선적으로 고려하니 말이죠.

    만약 이 패키지를 따라하고 싶다면, 위 코드를 참고해서 실행해 주시면 됩니다. 아니면, 코드가 적혀있는 ipynb 파일을 다운로드해서 그대로 실행해 보셔도 무방합니다.

    깃허브 링크

    반응형

    댓글

문의: jwkang3929@naver.com