[python] 링크 주소로 메타 태그 확인
파이썬 링크 주소로 메타 태그 정보 확인하는 방법
링크 주소에 포함된 메타 데이터는 다양하게 활용 가능하다. 예를 들어 흔히 우리가 사용하는 카카오톡이나 텔레그램에서 링크를 전송하면 해당 링크의 제목과 설명, 이미지로 구성된 새로운 메시지를 만들어, 사용자가 링크의 출처와 내용을 파악하기 쉽게 도와주는 데 사용될 수 있다.
파이썬으로 이런 과정을 간단하게 처리할 수 있다. 아래 코드에는 자주 사용되는 메타 태그만 나열해뒀다. 이외에 필요한 메타 태그의 경우 search_metas 값에 추가만 하면 된다.
import requests
from bs4 import BeautifulSoup
def getMetaFromUrl(url=''):
# 변수 초기화
result = {
'url': url
}
# 요청값 설정
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'
}
response = requests.get(url, headers=headers)
# HTML 소스코드 추출
html = BeautifulSoup(response.content, 'html.parser')
# 검색할 메타 리스트
# - 새로운 메타 태그가 있다면 추가하면 된다.
# - 예를 들어, 추가할 태그가 'title' 이라면 해당 배열에 메타 형식을 추가한다.
search_metas = {
'title': [
'meta[property="og:title"]',
'meta[name="title"]'
],
'description': [
'meta[property="og:description"]',
'meta[name="description"]'
],
'author': [
'meta[property="og:article:author"]',
'meta[name="author"]'
],
'image': [
'meta[property="og:image"]'
],
'site_name': [
'meta[property="og:site_name"]'
]
}
# HTML 소스코드에서 메타 태그를 검색한다.
for name in search_metas:
for property in search_metas[name]:
# 결과 key값 초기화
if name not in result:
result[name] = ''
# 메타 태그 확인
tag = html.select_one(property)
if tag is not None and 'content' in tag.attrs:
# 메타 데이터 확인
value = tag.attrs['content'].strip()
if value != '':
result[name] = tag.attrs['content'].strip()
break
# 검색된 메타값 반환
return result
getMetaFromUrl() 메소드 실행 결과
{
'url': 'https://...',
'title': 'extract meta data from url',
'description': 'description ...',
'author': 'dev-nam',
'image': '',
'site_name': 'dev-nam blog'
}
참고로 저의 코드는 클린하지 않습니다. 하지만 궁금하신게 있으시면 댓글 남겨주세요~😊
반응형
'주제 > python' 카테고리의 다른 글
[python] 슬랙 메시지 보내기 (0) | 2022.04.05 |
---|---|
[python] 링크 도메인, 호스트 정보 확인 (0) | 2022.03.23 |