안녕하세요 저는 대학교를 다니고 인공지능 실습 과제로 '다음 영화 리뷰 크롤링’으로 정했습니다.
해당 주제는 '다음 블로그’에서 실행되었고 서비스가 종료 된것도 알고있습니다. 하지만 없어진 코드를 만들고 싶어 주제를 바꾸지 않고 코딩을 계속하는 도중에 '다음 영화’에서 영화를 검색하고 리스트중에 첫번째 영화의 링크를 따올려고 하는 부분에서 문제가 생겼습니다. 제가 생각하기에는 리스트의 html 이 불러오지 못하는 것 같습니다. 제가 생각하는 오류가 실제로 맞나 확인하고 싶어 이렇게 문의 드립니다. 또한 이 주제로 계속해서 과제로 해도 되는지 여쭤봅니다. 감사합니다.
불러오지 못하는 html
<ul class="list_searchresult">
<li>
<div class="item_related">
<a href="/moviedb/main?movieId=62708" class="thumb_img">
<span class="bg_img" style="background-image:url(https://img1.daumcdn.net/thumb/C256x376/?fname=https%3A%2F%2Ft1.daumcdn.net%2Fmovie%2F0cdb0abb3d8da8c6332bf6a945a86f9a32f67abd)"></span>
</a>
<div class="thumb_cont">
<strong class="tit_item">
<a href="/moviedb/main?movieId=62708" class="link_tit">아바타: 물의 길</a>
</strong>
<span class="txt_origin">Avatar: The Way of Water</span>
<dl class="desc_info">
<dt>제작</dt>
<dd>2022</dd>
</dl>
<dl class="desc_info">
<dt>장르</dt>
<dd>
액션,
어드벤처,
SF,
스릴러
</dd>
</dl>
<dl class="desc_info">
<dt>개요</dt>
<dd>12세이상관람가, 192분</dd>
</dl>
</div>
</div>
</li><li>
<div class="item_related">
<a href="/moviedb/main?movieId=42148" class="thumb_img">
<span class="bg_img" style="background-image:url(https://img1.daumcdn.net/thumb/C256x376/?fname=https%3A%2F%2Ft1.daumcdn.net%2Fmovie%2F4ac650521929b5e6f9f202ec873f29f86b683069)"></span>
</a>
<div class="thumb_cont">
<strong class="tit_item">
<a href="/moviedb/main?movieId=42148" class="link_tit">아바타</a>
</strong>
<span class="txt_origin">Avatar</span>
<dl class="desc_info">
<dt>제작</dt>
<dd>2009</dd>
</dl>
<dl class="desc_info">
<dt>장르</dt>
<dd>
액션,
어드벤처,
SF
</dd>
</dl>
<dl class="desc_info">
<dt>개요</dt>
<dd>12세이상관람가, 165분</dd>
</dl>
</div>
</div>
</li><li>
<div class="item_related">
<a href="/moviedb/main?movieId=84609" class="thumb_img">
<span class="bg_img" style="background-image:url(https://img1.daumcdn.net/thumb/C256x376/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fcfile%2F273B5F48531EC67005)"></span>
</a>
<div class="thumb_cont">
<strong class="tit_item">
<a href="/moviedb/main?movieId=84609" class="link_tit">아바타 정글의 비밀</a>
</strong>
<span class="txt_origin">Jungle Master</span>
<dl class="desc_info">
<dt>제작</dt>
<dd>2013</dd>
</dl>
<dl class="desc_info">
<dt>장르</dt>
<dd>
판타지,
어드벤처,
애니메이션
</dd>
</dl>
<dl class="desc_info">
<dt>개요</dt>
<dd>전체관람가, 83분</dd>
</dl>
</div>
</div>
</li><li>
<div class="item_related">
<a href="/moviedb/main?movieId=52145" class="thumb_img">
<span class="bg_img" style="background-image:url(https://img1.daumcdn.net/thumb/C256x376/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fcfile%2F1771671B4C34084628)"></span>
</a>
<div class="thumb_cont">
<strong class="tit_item">
<a href="/moviedb/main?movieId=52145" class="link_tit">라스트 에어벤더</a>
</strong>
<span class="txt_origin">The Last Airbender</span>
<dl class="desc_info">
<dt>제작</dt>
<dd>2010</dd>
</dl>
<dl class="desc_info">
<dt>장르</dt>
<dd>
액션,
어드벤처
</dd>
</dl>
<dl class="desc_info">
<dt>개요</dt>
<dd>전체관람가, 103분</dd>
</dl>
</div>
</div>
</li></ul>
실행시키고 아바타를 입력했을시 오류나는 코드
import requests
from bs4 import BeautifulSoup
def get_url(query):
base_url = "https://movie.daum.net/search"
params = {
"q" : query,
"tab" : "all"
}
url = base_url + "?" + requests.compat.urlencode(params)
return url
def get_href(soup):
movie_list = soup.find_all("ul", class_="list_searchresult")
if movie_list:
href = movie_list[0].find('a')['href']
return "https://movie.daum.net" + href
else:
return None
def crawling(soup):
movie_list = soup.find_all("div", class_="movie-info")
result = []
for movie in movie_list:
title = movie.find("a", class_="title").text
result.append(title)
return result
def main():
list_href = []
custom_header = {
'referer': 'https://movie.daum.net/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36'
}
movie = input('영화 제목을 입력하세요.\n> ')
url = get_url(movie)
print(url)
req = requests.get(url, headers=custom_header)
soup = BeautifulSoup(req.text, "html.parser")
movie_url = get_href(soup)
print(movie_url)
if movie_url is not None:
href_req = requests.get(movie_url)
href_soup = BeautifulSoup(href_req.text, "html.parser")
list_href = crawling(href_soup)
print(list_href)
if __name__ == "__main__":
main()
읽어주셔서 감사합니다.