티스토리 뷰
프로젝트 준비 - 프로젝트에서 사용할 데이터 넣기(웹 스크래핑)
API를 설계하고 만드는 것에 집중할 수 있게,
1) 사용할 데이터를 웹 스크래핑해서,
2) 데이터베이스에 저장하는 코드를 미리 작성해두었어요.
moviestar 폴더 안에 init_db.py 파일을 만들어 아래 코드를 복사-붙여넣기해주세요.
[코드스니펫] - 무비스타-init_db.py
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
# DB에 저장할 영화인들의 출처 url을 가져옵니다.
def get_urls():
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('https://movie.naver.com/movie/sdb/rank/rpeople.nhn', headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#old_content > table > tbody > tr')
urls = []
for tr in trs:
a = tr.select_one('td.title > a')
if a is not None:
base_url = 'https://movie.naver.com/'
url = base_url + a['href']
urls.append(url)
return urls
# 출처 url로부터 영화인들의 사진, 이름, 최근작 정보를 가져오고 mystar 콜렉션에 저장합니다.
def insert_star(url):
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')
name = soup.select_one('#content > div.article > div.mv_info_area > div.mv_info.character > h3 > a').text
img_url = soup.select_one('#content > div.article > div.mv_info_area > div.poster > img')['src']
recent_work = soup.select_one(
'#content > div.article > div.mv_info_area > div.mv_info.character > dl > dd > a:nth-child(1)').text
doc = {
'name': name,
'img_url': img_url,
'recent': recent_work,
'url': url,
'like': 0
}
db.mystar.insert_one(doc)
print('완료!', name)
# 기존 mystar 콜렉션을 삭제하고, 출처 url들을 가져온 후, 크롤링하여 DB에 저장합니다.
def insert_all():
db.mystar.drop() # mystar 콜렉션을 모두 지워줍니다.
urls = get_urls()
for url in urls:
insert_star(url)
### 실행하기
insert_all()
init_db.py 파일을 실행하면 내 mongoDB의 mystar collection에 영화인 정보가 저장됩니다.
mystar 콜렉션에 데이터가 저장된 모습은 다음과 같습니다.
'항해' 카테고리의 다른 글
5주차_5([무비스타] - GET연습(보여주기)) (0) | 2021.12.16 |
---|---|
5주차_4([무비스타] - 뼈대 준비하기) (0) | 2021.12.16 |
5주차_2([무비스타] - 프로젝트 세팅) (0) | 2021.12.16 |
5주차_1(설치) (0) | 2021.12.15 |
4주차_19([나홀로메모장] - GET 연습(보여주기)-수업) (0) | 2021.12.14 |