[์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ - 3์ฃผ์ฐจ ๊ฐ๋ฐ์ผ์ง / ์์ (์ค์ต/ํ์ด)
- -
๋ฒ์จ 3์ฃผ์ฐจ ๊ฐ๋ฐ์ผ์ง..
๋นจ๋ฆฌ ๋ฐฐ์ฐ๊ณ ์ถ์ ์๊ตฌ์ ์ด์ ์ผ๋ก ์ง๊ธ๊น์ง ๋ฌ๋ ค์ฌ ์ ์์๋ค.
์์ ๋ ํด์ฆ๋ ์ ๋ง์ ๋ง ์ด๋ ต์ง๋ง ๋ญ๊ฐ ์๊ฐํ๋ ํ์๋ค์ ์๋ฐ์ ์ผ๋ก ์ ๋ํ๋ ๊ต์ก ๋ด์ฉ๋ค์ด ๋์์ง๋ง์ ์๋ค.
๊ฐ์ธ์ ์ผ๋ก ์ผ์ํ ๋ฟ.. (์ต์ธํจ, ๋ต๋ตํจ, ๋ถ๋ ธ ๋ฑ)
๊ทธ๋๋ ์๊ฐ์ด ๊ฑธ๋ ค๋ ์ด๋ค๋ธ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ๋ ์ ๋ง๋ก ๊ฐ์ง ์ฑ์ทจ๊ฐ์ ๋งค์ฐ ํ์ฉํ ์๊ฐ ์๋ค.
์ด ์ํ๋ก ๋ ์ฆ์งํ๊ณ ๋ ๋์๊ฐ์
๋ฌธ์ ) ์ง๋๋ฎค์ง์ 1~50์ ๊ณก์ ์คํฌ๋ํ ํด๋ณด์ธ์.
์์ / ๊ณก ์ ๋ชฉ / ๊ฐ์๋ฅผ ์คํฌ๋ํ ํ๋ฉด ๋ฉ๋๋ค.
์ค์ต)
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
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://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
์ ์ ๋ฐฐ์ด ๋ด์ฉ์ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์ ๋ ฅํ ์ค๋น๋ฅผ ํ๋ค.
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.number
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.title.ellipsis
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.artist.ellipsis
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
ํน์ ๊ฐ์ง๊ณ ์ค๊ณ ์ ํ๋ ์ฝ๋์ ๊ฒฝ๋ก๋ฅผ ๊ฒ์ํ๊ณ ๊ณตํต๋ ๋ถ๋ถ๊น์ง ์คํฌ๋ฉ
trs ๋ก ์ง์ ํ๋ค.
์์ ์ ์์๋ฅผ ์คํฌ๋ฉ ํด๋ณด์
for tr in trs:
rank = tr.select_one('td.number').text
print(rank)
์ฒซ ๋ฒ์งธ๋ถํฐ ๋๊ด์ ๋ด์ฐฉ..
ํด๋น ์ฝ๋๋ฅผ ์คํํ๊ฒ ๋๋ฉด
๋ฌธ์ ๋ ์ด๋ฌํ๋ค.
๋ถ๋ฌ์ค๊ณ ์ถ์ ์ ๋ณด๋ง ํ์๋๊ฒ ํ๊ณ ์ถ์๊ฑด๋ฐ, td.number ๋ ํ ์คํธ 1๊ณผ span ์ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์๋ค.
๊ตฌ๋ถ์ ์ฃผ์ง ์๋๋ค๋ฉด ์ ๋ฐ ํ์์ ๊ณ์ ๋ ๊ฒ์ด๋ค.
๋น์ฐํ ๋นํฉ์ค๋ฌ์ด ์ด ๊ฒฐ๊ณผ๊ฐ์ ๋ฉ๋ถ์ ๋น ๋จ๋ฆฌ๊ฒ ํ์๊ณ , ๊ธฐ๊ป ํํธ๋ฅผ ์ป์ด ์ฌ์ฉํ ํจ์ strip() ํ์ง๋ง ์ฌ๊ธฐ์์๋ ์ ํ ์์ฉํ ์ ์์๋ค.
๊ทธ๋์ ์ด ๋ถ๋ถ๋ง ๋ช์ญ๋ถ์ ๋งค๋ฌ๋ ค ์์๋๋ฐ..
๋ฒ๋ฉ ๋ ์ค๋ฅธ split()
์ ๋ฒ์๋ ์ด๋ฐ ๊ตฌ๋ถ์ด ๋์ด์์ง ์์ ๊ฒฝ๋ก๋ ์ด๋ฐ ์์ผ๋ก ๋ถ๋ฌ๋ด์๋ ๊ฒ์ด ์๊ฐ๋ฌ๋ค.
๋ฐ๋ก ์คํ!!
for tr in trs:
rank = tr.select_one('td.number').text.split()
print(rank[0])
์ ๋ง ๋ฐฐ์ด๊ฑธ ์จ๋จน๋๋ค๋ ์ด๋ฐ๊ฑฐ๊ตฌ๋๋ฅผ ๋งํ๋ ๊ฑฐ์ผ ๊ฒ์ด๋ค.
ํ์ฐํ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ์ ๋ง์ธ๋ฅผ ์ธ์น๋ฉฐ ๋ค์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์จ๋ค.
์์ ํ์ดํ, ์ฆ ์ ๋ชฉ์ ๋ถ๋ฌ์๋ณด์.
for tr in trs:
title = tr.select_one('td.info > a.title').text
์์๋ ์ข ์ด๋ ค์ ์ผ๋ ์ด๋ฒ๊ป ์ฝ๊ฒ ์ง ํ๋ ๋์ ์์ผํ ์๊ฐ์ ํ์คํ๊ฒ ๋ถ์ ์ฃผ์๋ค.
๋ฐ๋ก ํํธ๋ฅผ ์ฌ๊ธฐ์ ์ ์ฉ์์ผ๋ณด์๋ค.
for tr in trs:
title = tr.select_one('td.info > a.title').text.strip()
print(title)
.strip() ์ ๊ฐ์ง๊ณ ์ค๊ณ ์ ํ๋ ์ ๋ณด์ ์ ์์ ๊ณต๋ฐฑ ๋ฐ ์ ๋ ฅํ ๋ด์ฉ์ ์๋ตํด์ฃผ๋ ์ญํ ์ ํ๋ค๊ณ ํ๋ค.
ํธ ใ ก ์
์ ๋ชฉ๊น์ง๋ ์ฑ๊ณต์ !! ๋ค์ ๊ฐ์๋ช ๊น์ง!!
for tr in trs:
name = tr.select_one('td.info > a.artist').text
์ด ์นดํ ๊ณ ๋ฆฌ๋ ๊ธฐํนํ๊ฒ๋ ๋จ์ํ๊ฒ ๋์ด๊ฐ ์ ์์๋ค.
์ด์ ๋ณ์ ์ง์ ํ 3๊ฐ์ง๋ฅผ ํ๋ฒ์ ํ์ํ ์ ์๋๋ก ํ์.
for tr in trs:
rank = tr.select_one('td.number').text.split()
title = tr.select_one('td.info > a.title').text.strip()
name = tr.select_one('td.info > a.artist').text
print(rank[0], title, name)
๋ฌธ์ ์์์ ๋์ผํ๊ฒ ํ์๊ฐ ๋์์์ ์ ์ ์๋ค.
ํด๋ต์ฝ๋์ ๋น๊ต)
์ง์ ์ฝ๋ฉ)
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
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://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
rank = tr.select_one('td.number').text.split()
title = tr.select_one('td.info > a.title').text.strip()
name = tr.select_one('td.info > a.artist').text
print(rank[0], title, name)
ํด์ค)
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://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
title = tr.select_one('td.info > a.title.ellipsis').text.strip()
rank = tr.select_one('td.number').text[0:2].strip()
artist = tr.select_one('td.info > a.artist.ellipsis').text
print(rank, title, artist)
๋น๊ตํด ๋ดค์ ๋ ๋์ ์ฝ๋์ ํ์คํ ๊ฒฝ๋ก ์ค์ ๊ณผ ํด์ค ์ฝ๋์์๋ split() ์ด ๋ณด์ด์ง ์์๋ค
.text[0:2] ๊ฐ ๊ฐ์ ์ญํ ์ ํ๋ ๊ฒ ๊ฐ๋ค.
๊ฐ์ ๊ฒฐ๊ณผ ๊ฐ ์์๋ ์ญ์ ๋ค๋ฅธ ์ฝ๋๋ฅผ ๋ณผ ์ ์๋ค.
์์ผ๋ก๋ ์ด๋ฐ ๋ถ๋ถ์ ๊ฒฝํํ๊ณ ์ฝ๋๋ฅผ ๋น๊ตํ๋ฉด์ ์ด๋ค ์ฝ๋ฉ์ ํด์ผ ๋ ๋ณด๊ธฐ ์ฝ๊ณ ๊ฐํธํ๊ณ ํจ์จ์ ์ผ๋ก ํ ์ ์๋์ง ์๋ชฉ์ ๋ํ ํ์๊ฐ ์๋ค.
๊ฐ๋จํ ๋ฌธ์ ๋ผ ์ฌ๊ธฐ๊ณ ํ ์ ์์์ง๋ง, ๊ทธ๋๋ ์ด๋ ๊ฒ ํ๋ ํ๋ ํด๊ฒฐํด ๋์๊ฐ๋ฉด์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด ๋ผ ์ ์๋ ๋ฅ๋ ฅ์ ๊ธฐ๋ฅด๋ ๊ฒ.
์ ๋ง ๊ฐ์ง ๊ฒฝํ์ด๊ณ ๊พธ์คํ ๋ ธ๋ ฅ์ด ํ์ํ ๊ฒ ๊ฐ๋ค.
๋ ์ ์งํด์ ๋์๊ฐ์.
'๐ถ ๋ด์ผ๋ฐฐ์๋จ > ์น๊ฐ๋ฐ ์ข ํฉ ๊ฐ๋ฐ์ผ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
-
[์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ - 5์ฃผ์ฐจ ๊ฐ๋ฐ์ผ์ง / ์์ 2022.12.31
-
[์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ - 4์ฃผ์ฐจ ๊ฐ๋ฐ์ผ์ง / ์์ 2022.12.31
-
3์ฃผ์ฐจ_Quiz_์น์คํฌ๋ํ ๊ฒฐ๊ณผ ์ด์ฉํ๊ธฐ ํ์ด ๋์๊น 2022.12.31
-
3์ฃผ์ฐจ_Quiz_์น์คํฌ๋ํ(ํฌ๋กค๋ง) ํ์ด ๋์๊น 2022.12.31
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค