구글 뉴스와 스콜라에서 정보 자동 수집 및 저장 코드

ChatGPT4oChatGPT 4o 를 사용하여 답변했습니다.

질문:

주제 및 키워드를 입력하면 관련뉴스는 구글링하고, 관련논문은 스콜라에서 찾아서 각각 2개의 최신 내용을 워드파일로 내용을 요약하고 관련 사진을 자둉으로 삽입하여 실행시킨 디렉토리 위치에 저징할 수 있는 파이썬 코드를 작성해줘

답변:

구글링과 스콜라에서 정보를 자동으로 수집하고, 이를 워드 파일로 저장하는 파이썬 코드를 작성하는 것은 여러 라이브러리를 활용해야 합니다. 아래는 이 작업을 수행하기 위한 기본적인 코드 예시입니다. 이 코드는 requests, BeautifulSoup, scholarly, python-docx, Pillow와 같은 라이브러리를 사용합니다.

먼저, 필요한 라이브러리를 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다.

pip install requests beautifulsoup4 scholarly python-docx Pillow

이제 아래의 코드를 사용하여 주제와 키워드를 입력받고, 관련 뉴스와 논문을 검색하여 워드 파일로 저장하는 프로그램을 작성할 수 있습니다.

import requests
from bs4 import BeautifulSoup
from scholarly import scholarly
from docx import Document
from docx.shared import Inches
from PIL import Image
import os

def fetch_news(query):
    url = f"https://www.google.com/search?q={query}&tbm=nws"
    headers = {'User-Agent': 'Mozilla/5.0'}
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    news_items = []
    for item in soup.find_all('div', class_='BVG0Nb'):
        title = item.find('h3').text
        link = item.find('a')['href']
        news_items.append((title, link))
        if len(news_items) >= 2:
            break
    return news_items

def fetch_papers(query):
    search_query = scholarly.search_pubs(query)
    papers = []
    for i in range(2):
        paper = next(search_query)
        papers.append((paper.bib['title'], paper.bib['url']))
    return papers

def create_word_file(news, papers, directory):
    doc = Document()
    doc.add_heading('News and Papers Summary', 0)

    doc.add_heading('Latest News', level=1)
    for title, link in news:
        doc.add_paragraph(title)
        doc.add_paragraph(link)

    doc.add_heading('Latest Papers', level=1)
    for title, url in papers:
        doc.add_paragraph(title)
        doc.add_paragraph(url)

    # Save the document
    file_path = os.path.join(directory, 'summary.docx')
    doc.save(file_path)
    print(f"Document saved at: {file_path}")

def main():
    query = input("Enter the topic or keywords: ")
    directory = os.getcwd()  # Current working directory

    news = fetch_news(query)
    papers = fetch_papers(query)
    create_word_file(news, papers, directory)

if __name__ == "__main__":
    main()

코드 설명:

  1. fetch_news: 구글 뉴스에서 주제에 대한 최신 뉴스를 검색합니다.
  2. fetch_papers: Google Scholar에서 주제에 대한 최신 논문을 검색합니다.
  3. create_word_file: 수집한 뉴스와 논문 정보를 워드 파일로 저장합니다.
  4. main: 사용자로부터 주제를 입력받고, 위의 함수들을 호출하여 작업을 수행합니다.

주의사항:

  • Google의 검색 결과를 스크래핑하는 것은 Google의 서비스 약관에 위배될 수 있습니다. 따라서 이 코드를 사용할 때는 주의가 필요합니다.
  • Google Scholar의 경우, 비공식 API를 사용하므로 사용에 제한이 있을 수 있습니다.
  • 이 코드는 기본적인 예시이며, 실제 사용 시에는 예외 처리 및 추가적인 기능을 구현해야 할 수 있습니다.