Meta Tag를 사용한 뉴스기사 제목, 요약문, 이미지가져오기

2024. 12. 9. 01:06·Data Science/Data Engineering
728x90
반응형

개요

  • 뉴스기사 URL을 input으로 넣으면 해당 URL에서 대표이미지, 기사 제목 등을 가져오는 모듈이 필요했다.
  • 예를 들자면 아래 사진처럼 카카오톡이나 슬랙 등에 url만 넣으면 자동으로 이미지와 링크로 연결되는 컨텐츠를 만들어주는것이다.

코드

  • 구글링을 해보니 기사에는 meta tag라는것이 있었고, 이를 parsing하면 간단히 구현이 가능해보였다.
  • Python의 requests와 BeautifulSoup, Pillow, io를 사용하여 구현하기로 마음을 먹었다.
  • 우선 header를 설정하여 주었고, requests와 Beutifulsoup으로 html을 parsing 해왔다.
  • 이후 find 함수를 통해 meta의 title, description, image_url, image를 가져왔고, 이를 dict 형태로 return 하였다.
import requests
from bs4 import BeautifulSoup
from PIL import Image
from io import BytesIO

def article_parsing(url):
    # request error를 피하기 위한 header 설정
    header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

    # html parser
    web = BeautifulSoup(requests.get(url, allow_redirects=False, headers=header).text, 'html.parser')

    # 제목
    title = web.find("meta", property="og:title")['content']

    # 요약 내용
    description = web.find('meta', property="og:description")['content']

    # 대표 이미지 url
    image_url = web.find("meta", property="og:image")['content']

    # 대표이미지 객체
    image = Image.open(BytesIO(requests.get(image_url, headers=header).content))

    return {'title':title, 'description' : description, 'image': image, 'image_url':image_url, 'url':url }

결과

  • 위의 모듈을 사용하여 뉴스기사의 URL을 넣으면 meta tag를 사용하여 이미지와, 제목, url, description을 가져오는것을 잘 확인하였다.

728x90
반응형

'Data Science > Data Engineering' 카테고리의 다른 글

구글 colab과 vscode 연동하기  (0) 2024.12.13
업비트 크롤링 (Crawling)  (1) 2024.12.03
아나콘다 가상환경 주피터랩에서 쉽게 쓰기  (1) 2024.11.30
뽐뿌 특가 데이터 전처리 하기  (0) 2024.11.24
뽐뿌 특가 게시판 크롤링하기  (0) 2024.11.23
'Data Science/Data Engineering' 카테고리의 다른 글
  • 구글 colab과 vscode 연동하기
  • 업비트 크롤링 (Crawling)
  • 아나콘다 가상환경 주피터랩에서 쉽게 쓰기
  • 뽐뿌 특가 데이터 전처리 하기
Data Include Me
Data Include Me
AI, LLM, 머신러닝, 파이썬 등 최신 정보와 튜토리얼을 제공하는 데이터 사이언스 전문 블로그입니다.
  • Data Include Me
    Data Include Me
    Data Include Me
  • 전체
    오늘
    어제
    • 전체 (35)
      • AI (16)
        • Machine Learing (2)
        • Deep Learning (0)
        • Natural Language Processing (4)
        • Large Language Model (7)
        • Computer Vision (3)
      • Data Science (10)
        • Data Analysis (1)
        • Statistics & Math (3)
        • Data Engineering (6)
        • Data Visualization (0)
      • Programming Challenges (2)
        • Baekjoon (0)
        • Programmers (2)
        • HackerRank (0)
      • Development (7)
        • Cloud & DevOps (5)
        • Project (2)
  • 인기 글

  • 태그

    오블완
    Cloud Computing
    llm
    Python
    티스토리챌린지
    integral
    mcp
    Crawling
    sympy
    LangChain
  • 링크

    • Github
    • Linkedin
  • 반응형
  • hELLO· Designed By정상우.v4.10.1
Data Include Me
Meta Tag를 사용한 뉴스기사 제목, 요약문, 이미지가져오기
상단으로

티스토리툴바