본문 바로가기

python

파이썬 웹 스크래핑

웹 스크래핑하기

스크린샷 2021-04-14 오후 7 15 41

 

네이버 영화 사이트에 접속하여 영화의 제목들을 뽑아오는 것을 목표로 스크래핑을 하였다.

 

먼저 virtualenv 가상 환경에서 request와 BeatufulSoup 모듈을 설치한 후 진행하였다.

 

import requests
from bs4 import BeautifulSoup

# response에 requests로 얻은 URL을 할당한다.
response = requests.get('https://movie.naver.com/movie/running/current.nhn#')
# soup에 BeautifulSoup모듈을 사용하여 URL을 텍스트로 변환하고 파싱한다.
soup = BeauifulSoup(response.text, 'html.parser)

스크린샷 2021-04-14 오후 7 26 50

 

내가 스크랩하고 싶은 타겟이 HTML 구조 안에 어디에 위치해 있는지 확인한다.

그다음 li_list에 soup.select를 이용하여 내가 뽑고 싶은 그 타깃을 할당한다.

 

import requests
from bs4 import BeautifulSoup

response = requests.get('https://movie.naver.com/movie/running/current.nhn#')
soup = BeautifulSoup(response.text, 'html.parser')

# 영화 페이지 전체
# 전체 ul 태그안에 한 영화씩 li태그들로 이루어져있다.
li_list = soup.select('#content > div.article > div:nth-child(1) > div.lst_wrap > ul > li')
# li_list에는 ul의 li들이 담겨있다. 그래서 반복문을 사용하여 li들을 모두 출력해야한다.
# dl 태그 안의 dt 태그 안의 a 태그안의 텍스트를 하나씩 가져온다.
title = title.select_one('dl > dt > a').text

# 위와 마친가지로 영화마다 고유의 값을 가져온다. 
href = title.select_one('dl > dt > a')['href']

 

여기서 주의할 점은 중간마다 내가 타겟을 제대로 가져왔는지 출력하면서 차근차근하는 것이 중요하다.

 

import requests
from bs4 import BeautifulSoup

response = requests.get('https://movie.naver.com/movie/running/current.nhn#')
soup = BeautifulSoup(response.text, 'html.parser')

# 영화 페이지 전체
li_list = soup.select('#content > div.article > div:nth-child(1) > div.lst_wrap > ul > li')
for title in li_list :
    href = title.select_one('dl > dt > a')['href']
    title = title.select_one('dl > dt > a').text
    print(title)
    print(href.split('?code=')[1])
# for문을 사용하여 영화의 제목들과 고유한 코드를 순회하며 출력한다.

 

위 방법을 통해 한 페이지 안에 있는 영화의 제목들과 코드를 스크래핑할 수 있다.

'python' 카테고리의 다른 글

python 네이버 금융 웹 스크래핑  (0) 2022.05.14
set과 frozenset  (0) 2022.04.07
dict & defaultdict  (0) 2022.04.06
파이썬의 메모리 관리  (0) 2022.04.06
제너레이터 함수  (0) 2022.03.06