728x90
๋ฐ์ํ
โ . ์ด๋ฒ ํ์ฐจ ํ์ต ๋ชฉํ (goal)
1. ๋ฐฐ์ฐ๊ณ ์ ํ๋ ๊ฒ
- ์ง๋ ๋ฎค์ง ์ฌ์ดํธ์ '์์, ๊ณก ์ ๋ชฉ, ๊ฐ์' ๋ฅผ ์คํฌ๋ํ ํ๊ธฐ
โ ก. ํด๋ณด๊ธฐ
1. ํด์ฆ ํ ๋ ํํธ
2. ์ฐ์ ์๋ํ๋ ์ฝ๋
#jquery_๋ณ์ํ์ฉ๊ฝ์์ฃผ๊ธฐ_์์์ฝ๋
#jquery_append_์ถ๊ฐ๋ก๋ถ์ด๊ธฐ_์์์ฝ๋
- strip() ์ฐธ์กฐํ ์ฌ์ดํธ
https://codechacha.com/ko/python-string-strip/
- ์ฐ์ ์๋ํ๋ ์ฝ๋
import requests from bs4 import BeautifulSoup
์ค์ ์ฌ๋์ธ ๊ฒ ์ฒ๋ผ ํด์ฃผ๋ ค๊ณ (๋ง์น, ๋ธ๋ผ์ฐ์ ์์ call ์ ๋ ๋ฆฌ๋ ๊ฒ ์ฒ๋ผ ํด์ฃผ๋ ค๊ณ , ์ฌ๋์ธ ๊ฒ ์ฒ๋ผ ํด์ฃผ๋ ค๊ณ )
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'}
ํด๋น url ์์ html ์ ๋ฐ์์จ๋ค. (โ url ๋ณ๊ฒฝํด์ ์ฌ์ฉ)
data = requests.get('https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20210701',headers=headers)
html์์ ์ํ๋ ๋ถ๋ถ์ ์์๋ด๊ธฐ ์ํด ์ฐ์ '์ ์ฒด๋ฅผ ๋ด์์จ๋ค.' > ๊ฐ ํ์ธ
soup = BeautifulSoup(data.text, 'html.parser')
print(soup)
๋ชฉํ๋ '์์(rank), ๊ณก ์ ๋ชฉ(title), ๊ฐ์(artist)' ์คํฌ๋ํ > select() ํจ์์ ์ค๋ณต๋๋ฏ๋ก ์ฃผ์์ฒ๋ฆฌ
rank, title, artist ๊ฐ์ ธ์ค๊ธฐ
rank = soup.select_one('#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.number').text[0:3].strip()
title = soup.select_one('#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.title.ellipsis').text.strip()
artist = soup.select_one('#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.artist.ellipsis').text
print(rank, title, artist)
๊ณตํต ๋ถ๋ถ ๊ฐ์ ธ์ค๊ณ > ๊ฒฐ์ธก๊ฐ ์์ ์ฃผ๊ณ > ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ถ์กฑํ selector ๋ถ๋ถ ๊ฐ์ ธ์ค๊ธฐ
songs = soup.select('#body-content > div.newest-list > div > table > tbody > tr') # :nth-child(1) ์ด ๋ถ๋ถ์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ ๊ฒ ์ด๋ค.
for song in songs:
a = song.select_one('td.number')
if a != None:
rank = a.text[0:3].strip()
# print(rank)
# title ์ ๋ชฉ ๋ฝ๊ธฐ / ์ฐ๋ น๋ฑ๊ธ์ ๋๋ฌธ์ text [4:300] ์ ํจ. ์ด๊ฒ ์์ผ๋ฉด 19๊ธ, ์ด๋ฐ๊ฒ๋ ๊ฐ์ด ๋์ด.
title = song.select_one('td.info > a.title.ellipsis').text[4:300].strip()
# print(title)
artist = song.select_one('td.info > a.artist.ellipsis').text.strip()
print(rank, title, artist)
```
- ๋ฐฐ์ด ๊ฒ
- `# title ์ ๋ชฉ ๋ฝ๊ธฐ / ์ฐ๋ น๋ฑ๊ธ์ ๋๋ฌธ์ text [4:300] ์ ํจ. ์ด๊ฒ ์์ผ๋ฉด 19๊ธ, ์ด๋ฐ๊ฒ๋ ๊ฐ์ด ๋์ด.
- ํํฐ๋ ์ฝ๋
- โ ์์ง ๋ชป ๋ด!
3. design critic
โ ข. ์น ์๋น์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ค์ํ ๊ฒ
์ค์ํ ๊ฒ
์ฐ๋ฆฌ ๋์ ๋ณด์ด๋ ๊ฒ
- html, css, javascript
- ์ผํ์
- 1,2 ์ฃผ์ฐจ
๋์ ๋ณด์ด๋ ๊ฒ์ ์ฃผ๋ ์น๊ตฌ
- ์๋ฒ
- ์๋ฒ๋ฅผ ๋ง๋ค ์ ์๋ ์ธ์ด์ธ ํ์ด์ฌ์ ๋ฐฐ์ (3์ฃผ์ฐจ)
- (4,5์ฃผ์ฐจ) ์ด์ ๋ง๋ ๊ฒ ๋ค์ ๋ง๋๊ฒ ํ๊ธฐ
๐ญ What i learned
-
728x90
๋ฐ์ํ
'[WEB & AI] > ์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ_์น๊ฐ๋ฐ์ข ํฉ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
4-3_Flask ์์ํ๊ธฐ - HTMLํ์ผ ์ฃผ๊ธฐ (0) | 2024.03.25 |
---|---|
4-2_Flask ์์ํ๊ธฐ - ์๋ฒ๋ง๋ค๊ธฐ (5) | 2024.01.04 |
3-14_ Quiz_์น์คํฌ๋ํ ๊ฒฐ๊ณผ ์ด์ฉํ๊ธฐ (2) | 2023.11.28 |
3-13_์น์คํฌ๋ํ ๊ฒฐ๊ณผ ์ ์ฅํ๊ธฐ (1) | 2023.11.27 |
3-12_pymongo๋ก DB์กฐ์ํ๊ธฐ (1) | 2023.11.26 |