์ ์๋ : "๋๊ฒ ๋ง๋๋ ๊ฒ์ด ์ค์ํฉ๋๋ค"
๋ : ๊ทธ๋๊น.. ๋ฐฉ๋ฒ์ ์ข ๋ ๋ํ
์ผํ๊ฒ.. ์๋ ค์ฃผ์๋ฉด ์๋ ๊น์...?
[๋ค ์ดํดํ๋ ๊ฒ๋ ์ข์ง๋ง, ์ต๋ํ ์ด๋ ๊ฒ ํ๋ฌ๊ฐ๋๊ตฌ๋ ๋ผ๊ณ ๋ณด๋ฉฐ ์ต์ํด์ง์!!]
์น์คํฌ๋ํ (๋ค์ด๋ฒ ์ํ ํ์ด์ง์์ ์์, ์ ๋ชฉ, ๋ณ์ ๋ง ๋ฐ๋ก ์คํฌ๋ฉ ํด๋ณด์)
import ํ bs4๋ฅผ ์ค์น
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 > copyselector ํด๋ฆญ์ผ๋ก ๋ณต์ฌํ๋ค.
# 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 #๋ฒ ์ผ๋ฆฌ ์ด๊ฒ์ธ
# old_content > table > tbody > tr:nth-child(5) > td.title > div > a #์ฃผ์ ์ฅ
:nth-child(2) > td.title > div > a ์ด ๋ถ๋ถ ๊น์ง๋ ๊ฐ ๊ฐ๋ณ ๊ฒฝ๋ก์ด๊ธฐ ๋๋ฌธ์ ์ ์ธ
# old_content > table > tbody > tr
๊ทธ ๋ค์ trs = soup.select('#old_content > table > tbody > tr') ์ง์
๋ด๊ฐ ์คํฌ๋ฉ ํ๊ณ ์ ํ๋ ๊ฒฝ๋ก๋ฅผ ๊ฒ์ฌ๋ฅผ ํตํด ์ฐพ๊ณ ๊ณตํต๋ ๋ฒ์๊น์ง ์ง์ ๊ธฐ์
trs = soup.select('#old_content > table > tbody > tr')
๊ทธ๋ฆฐ ๋ถ : ์ ๋ชฉ ์ ๊ฒฝ๋ก ์ฐพ๊ธฐ
# old_content > table > tbody > tr:nth-child(2) > td.title > div > a
์์ '๊ทธ๋ฆฐ ๋ถ'์ด ์์นํ ๊ฒฝ๋ก = td.title > div > a
for ๋ฅผ ์ฌ์ฉํด์ a_tag ์ ์ด๋ฆ์ด ๋ค์ด๊ฐ ์๋ฆฌ ์ง์
.select_one ์ ํน์ ๋ถ๋ถ๋ง ์ ํ
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
์์ ์ฝ๋๋ฅผ ์คํ์ํค๋ฉด
์ค๊ฐ์ None ์ด ๋ค์ด๊ฐ ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด None ์ ์๋ตํ๊ธฐ ์ํค if ๋ฅผ ์จ์ฃผ๊ณ
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
๋ฐ์ผ๋ก ์์, ์ ๋ชฉ, ๋ณ์ ์ง์
์์ = rank
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
rank = tr.select_one('td:nth-child(1) > img')['alt']
์ฌ๊ธฐ์ ์์๋ฅผ ๋ํ๋ด๋ alt ๋ถ๋ถ๋ง ๊ฐ์ ธ์ค๊ธฐ ( '' ๋๋ฝ ์ฃผ์ )
์ ๋ชฉ = title
.text ๋ฅผ ์ฌ์ฉํ์ฌ '๊ทธ๋ฆฐ ๋ถ' ๋ง ์ถ์ถ
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
title = a_tag.text
๋ณ์ = star
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
star = tr.select_one('td.point').text
์ ๋ฆฌํ๋ฉด
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
rank = tr.select_one('td:nth-child(1) > img')[alt]
title = a_tag.text
star = tr.select_one('td.point').text
print(rank, title, star)
์คํํ๋ฉด
์ ์์ ์ผ๋ก ์์, ์ ๋ชฉ, ๋ณ์ ์ด ์ถ๋ ฅ
์ ์ ๋์ด๋๊ฐ ์ด๋ ค์์ง๋ฉด์ ๋ฐฐ์์ ์๋๋ ๋๋์ง๊ณ ์์์ ๋๋๋ค.
๋, ์ฐ์ต ๋ฌธ์ ์์๋ ์ฆ๊ฐ ๋ฐ์ํ์ง ๋ชปํ๊ณ ์ด๋ฒ ํด์ฆ ๋ฌธ์ ๊ฐ์ด ํจ๊ป ํ์ด์ผ ํ ๋๊ฐ ๋ง๋ค..
๊ทธ๋๋ ์กฐ๊ธ์ฉ..
๊ป์ง ๋ฒ๊ณ ์น์ด ํธ๋ ์์น์ฒ๋ผ
์์ง ์ ๋๋ก ํ์ง ํผ์ด๋ณด์ง ์์์ผ๋๊น
ํฌ๊ธฐํ์ง ๋ง๊ณ , ๋ ํด๋ณด์!!