bs4를 설치해야함
https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303
이 페이지에 들어간다
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.nhn?sel=pnt&date=20200303',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
# 코딩 시작
이게 크롤링 기본 세팅 코드이다
그린북 제목을 개발자도구에서 클릭하면
이렇게 나오는데 저 파란 부분을 copy> copy selector을 누른다.
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
그럼 이렇게 복사가 된다.
title= soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
print(title)
그럼 select_one을 먼저 해보자
하나만 select하는 것이다.
이렇게 치고 print를 해보면
이렇게 나온다
그런데 여기서 tag와 tag안에 있는 그린북이라는 텍스트를 가지고 오고 싶으면
print(title.text)
이렇게 하면 된다.
그런데 tag안에 있는 속성을 가지고 오고 싶으면
print(title['title'])
이렇게 써서 가지고 오면 된다.
이번에는 select여러개를 해보자
영화별로 제목 순위 별점을 가져오고 싶다
그러면 똑같은 구조로 되어있는 html을 파악을 해야겠다.
그린북 저 줄을 보면 tr태그로 되어있다.
그래서 copy selector을 해보자
#old_content > table > tbody > tr:nth-child(2)
#old_content > table > tbody > tr:nth-child(3)
바로 밑의 가버나움도 해보면 저렇게 나온다
그러면 뒤에 다른 부분을 떼면 해당하는 것들이 다 나오겠다.
#old_content > table > tbody > tr
trs = soup.select('#old_content > table > tbody > tr')
for tr in trs:
print(tr)
그럼 이렇게 크롤링을 하면 tr들이 리스트로 나온다
그러면 그 tr안에서 다시 title을 찾든지 순위를 찾든지 하면 되는 것이다.
그럼 다시 그린북을 copy selector해보자
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
이렇게 나오는데 아까 trs로 tr까지는 찾았다.
그러니까 뒤에 td.title > div > a 이만큼을 더 찾아야하는 것이다.
trs = soup.select('#old_content > table > tbody > tr')
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
print(a_tag)
그럼 for문을 돌면서 또 찾는 것이다.
그러면 이런 식으로 나온다
중간중간에 none이 나오는데 이것은 페이지에 구분선이다.
그러면 여기서 title만 얻으려고 하는데 .text를 쓰면 none때문에 오류가 난다.
그러므로
trs = soup.select('#old_content > table > tbody > tr')
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
print(a_tag.text)
if문으로 걸어주면 된다.
'WEB > python' 카테고리의 다른 글
[python] GET요청과 POST요청 코드 기본/ ajax코드 (0) | 2021.06.10 |
---|---|
[python] 지니뮤직 크롤링하고 이름 순위 아티스트 가져오기/ 파이썬 공백 제거 strip(), [n:n] (0) | 2021.06.10 |
[python] pymongo, 크롤링한 데이터를 db에 저장하고 찾고 수정하기 (0) | 2021.06.10 |
[python] pymongo, robo3t 사용 기본 문법 insert/ find/ update/ delete (0) | 2021.06.10 |
[python] 크롤링으로 영화 제목 랭킹 별점 가져오기 (0) | 2021.06.10 |