커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
[5-4]네이버 영화 종료 관련 문의
undefined주차
북마크
류*영
댓글
5
추천
1
조회수
73
조회수
73
답변 완료

무비스타-init_db.py 를 이용해 크롤링 해와야 하는 과정에서,

네이버 영화 서비스가 종료되어 출력 값이 나오지 않습니다.

코드를 살펴보니 네이버 영화 내에서 영화 배우들을 소개하는 사이트가 따로 있었던 것 같은데 (사실 서비스가 종료되어 어떤 페이지인지도 확인할 수 없습니다.)

대체할 수 있는 사이트인 다음 영화에서는 그런 사이트가 따로 없는 것 같네요.

실습을 어떻게 진행해야할까요?

다음 영화로 크롤링이 어렵다면

네이버 영화 크롤링 진행하셨던 db값이라도 insert문으로 공유해주실 수 있나요?


오류 발생 코드

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()


오류 결과


취소
 공유
취소
댓글 0
댓글 알림
나의얼굴