| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 26 | 27 | 28 | 29 |
| 30 |
- pymongo
- atlas
- NAS
- beautifulsoup
- backend
- CRUD
- javascript
- get
- body
- Algorithm
- mysql
- venv
- synology
- openapi
- Project
- PYTHON
- fetch
- mongodb
- portfolio
- github
- java
- requests
- flaskframework
- CSS
- OOP
- frontend
- Crawling
- flask
- json
- POST
- Today
- Total
wisePocket
[Flask] Flask framework 미니프로젝트(project pedia) 03 (웹 크롤링 기능 부분 구현 및 테스트) 본문
[Flask] Flask framework 미니프로젝트(project pedia) 03 (웹 크롤링 기능 부분 구현 및 테스트)
ohnyong 2023. 7. 12. 21:33개발하고자하는 프로젝트는 이전 project mars와 크게 다른 부분이
웹 크롤링을 이용한다는 점이다. 크롤링 할 때 *메타태그를 활용 할 것이라서
해당 부분의 기능을 테스트용으로 먼저 구현하고,
본 프로젝트에 삽입 할 예정이다.
| #### 웹 크롤링 - URL로부터 영화 이미지, 영화 제목, 영화 설명 항목 메타태그 크롤링(soup.select_one) |
1. 테스트용 URL
URL : https://movie.daum.net/moviedb/main?movieId=161806
스즈메의 문단속
Daum영화에서 자세한 내용을 확인하세요!
movie.daum.net
"스즈메의 문단속" 이라는 영화의 URL을 대상으로 테스트를 진행하려한다.
2. URL로 들어가서 메타 태그 확인하기
URL로 들어가서 해당 웹 페이지의 소스를 확인해보면
<head>태그 내에 <meta ...>를 확인 할 수 있다.

3. 웹 크롤링을 위한 requests, Beautifulsoup 임포트 및 URL의 HTML 파싱
- 웹 크롤링 테스트를 위한 meta_prac.py를 생성
- 웹 크롤링을 위한 requests 임포트
- 크롤링한 HTML을 text로 변환 parsing할 BeautifulSoup 임포트
- requests.get()을 통해 URL의 데이터(HTML 소스)를 받고 data라는 변수에 담기
- beautifulsoup()으로 data를 text 형태로 파싱, 구문 분석하여 soup이란 변수에 담기
import requests
from bs4 import BeautifulSoup
URL = 'https://movie.daum.net/moviedb/main?movieId=161806'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(URL,headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
4. "제목"을 가져와보자
- 해당 웹 페이지의 HTML을 살펴보면
- <meta>태그 안에 property는 "og:title"이며 content에 내가 원하는 텍스트가들어가있다.

- select_one()을 통해 soup에 담긴 HTML 소스 중 원하는 값이 있는 태그를 지목하고 해당 값을 선택할 수 있다.
ogtitle = soup.select_one('meta[property="og:title"]')['content']
- 선택된 태그의 값을 담은 ogtitle이란 변수를 출력해보면
- <meta>태그 중, property가 "og:title"인 'content'의 내용을 출력하고 있다.

5. 추가적으로 필요한것들도 가져와보자
원하는 값이 제목 이외에도 이미지 URL, 영화 설명이 필요하다.
위와 동일한 방식으로 HTML을 살펴보면
<meta>태그 안에 property는 "og:image"이며 content에 내가 원하는 이미지 URL이 들어가있다.
<meta>태그 안에 property는 "og:description"이며 content에 내가 원하는? 영화 설명이 들어가있다.

# meta태그의 프로퍼티가 og:title인 것을 가져온다.
# image, description도 가져온다.
ogtitle = soup.select_one('meta[property="og:title"]')['content']
ogimage = soup.select_one('meta[property="og:image"]')['content']
ogdesc = soup.select_one('meta[property="og:description"]')['content']
print(ogtitle+" /",ogimage+" /",ogdesc)

이제 URL로부터 영화 이미지, 영화 제목, 영화 설명 항목을 메타태그를 통해 얻어오는 것을 완성했다.
| 메타태그 메타 태그(meta tag)는 웹페이지가 담고 있는 컨텐츠가 아닌 웹페이지 자체의 정보를 명시하기 위한 목적으로 사용되는 HTML 태그를 의미 meta 태그는 검색엔진과 기타 클라이언트에 페이지에 대한 추가 정보를 제공하는 데 사용되는 HTML 태그입니다. 클라이언트는 meta 태그를 처리하고 지원하지 않는 태그는 무시합니다. meta 태그는 HTML 페이지의 <head> 섹션에 추가 https://developers.google.com/search/docs/crawling-indexing/special-tags?hl=ko 메타데이터: <meta> 요소 메타데이터는 데이터를 설명하는 데이터이다 그리고 HTML에서 문서에 공식적으로 메타데이터를 적용하는 방법이 있습니다. — the <meta> 요소. 물론 이 기사에서 다루고 있는 다른 것들도 메타 데이터라고 보면 됩니다. 페이지의 <head> 안에 다양한 형태의 <meta> 가 있습니다. https://developer.mozilla.org/ko/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML SNS등에서 (본 tstory도 마찬가지) URL링크를 공유하면 하단에 이미지/타이틀/내용 등이 나타나는 아래와 같은 것들이 meta 태그를 통해 나타난 것으로 이해하면 된다. ![]() ![]() |
해당 프로젝트는 아래 깃을 통해 업데이트 되고 있습니다.
https://github.com/yzpocket/Flask_project_pedia
GitHub - yzpocket/Flask_project_pedia: [Flask] Flask framework 미니프로젝트(project pedia)
[Flask] Flask framework 미니프로젝트(project pedia). Contribute to yzpocket/Flask_project_pedia development by creating an account on GitHub.
github.com

