상세 컨텐츠

본문 제목

파이썬을 이용한 웹 크롤링 (네이버영화)

CS전공 지식/웹서비스 이해하기

by 본투비곰손 2022. 12. 2. 00:03

본문

728x90

파이썬을 설치하고 크롤링에 필요한 라이브러리를 설치한다.

requests, beaurifulsoup4

import requests
from bs4 import BeautifulSoup

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/rmovie.naver?sel=pnt&date=20210829',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

크롤링 원하는 목록을 선택하고 개발자 도구를 사용하여 태그를 선택 복사한다.

import requests
from bs4 import BeautifulSoup

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/rmovie.naver?sel=pnt&date=20210829',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

#태그 하나를 복사하면 아래와 같다.
# title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
#목록 태그를 하나씩 복사하면 아래와 같은 패턴임을 알 수 있다.
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
#old_content > table > tbody > tr:nth-child(3) > td.title > div > a
#old_content > table > tbody > tr:nth-child(4) > td.title > div > a

movies = soup.select('#old_content > table > tbody > tr') //여러 값을 출력하는 select
#BeautifulSoup 라이브러리를 사용하여 목록의 배열을 만들고
#반복문을 사용하여 하나씩 출력해 준다.
for movie in movies:
    a = movie.select_one('td.title > div > a') # 하나씩 출력하는 select_one
    if a is not None: # 조건문을 사용하여 값이 없는 부분은 출력하지 않는다.
        print(a.text)

위와 같은 방법으로 영화순위의 text 즉 제목만을 불러올 수 있다.

 

movies = soup.select('#old_content > table > tbody > tr')

for movie in movies:
    a = movie.select_one('td.title > div > a') #동일한 방법으로 제목을 
    num = movie.select_one('td:nth-child(1) > img') #동일한 방법으로 순위를 
    rank = movie.select_one('td.point') #동일한 방법으로 평점을 크롤링하여 가져온다.
    if a is not None:
        print(num['alt'],a.text,rank.text)
# 순위 제목 평점 순으로 출력이 된다.
728x90

관련글 더보기