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

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

1. 설명

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

2. 방법

  • 구글링을 해보니 기사에는 meta tag라는것이 있었고, 이를 parsing하면 간단히 구현이 가능해보였다.
  • Python의 requests와 BeautifulSoup, Pillow, io를 사용하여 구현하기로 마음을 먹었다.
  • 우선 header를 설정하여 주었고, requests와 Beutifulsoup으로 html을 parsing 해왔다.
  • 이후 find 함수를 통해 meta의 title, description, image_url, image를 가져왔고, 이를 dict 형태로 return 하였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 }

3. 결과

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

This post is licensed under CC BY 4.0 by the author.