Hello creators ๐
3-8_Quiz_์น์คํฌ๋ํ(ํฌ๋กค๋ง) ์ฐ์ต 1 ๋ณธ๋ฌธ
3-8_Quiz_์น์คํฌ๋ํ(ํฌ๋กค๋ง) ์ฐ์ต 1
๋ถ์๋งค๋_HA 2023. 10. 13. 07:08โ . ์ด๋ฒ ํ์ฐจ ํ์ต ๋ชฉํ (goal)
1. ๋ฐฐ์ฐ๊ณ ์ ํ๋ ๊ฒ
- ์์ ๋ฐ ํ์ ํฌ๋กค๋ง
์์
๋ ์ค๋ฅธ์ชฝ ๊ฒ์ฌ ํด๋ฆญ -> ์ด๊ฑฐ ๊ฐ์ ธ์ค๊ธฐ
ํ์
์์ค๋ฅธ์ชฝ ๊ฒ์ฌ
ํด๋ฆญ -> ์ด๊ฑฐ ๊ฐ์ ธ์ค๊ธฐ
โ ก. ํด๋ณด๊ธฐ
1.
ํด๋น๊ฐ์ ์ด๋ ๊ฒ ์ ๊ทผํ๋ผ๊ณ ํํธ๋ฅผ ์ค๋ค.
์ ๋ชฐ๋๋ ๊ฒ
- tr ๊น์ง ๊ฐ์ ธ์์ผ๋๊น, ๋ค์๊ฑธ ๋ถ์ด๋ฉด๋๋ค. ํน์ html ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด์ ๊ฐ์ ธ์ค๋๊ฑฐ โญโญโญโญโญ
- .text ๋ฅผ ์๋ก ๊ฐ์ ธ์๋ ๋๋ค๋ ๊ฒ โญโญโญโญโญ
02-02 2์ฐจ ๋ณต์ต
- ์ฐ์ ๋์๊ฐ๋ ์ฝ๋
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://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)
html์์ ์ํ๋ ๋ถ๋ถ์ ์์๋ด๊ธฐ ์ํด ์ฐ์ '์ ์ฒด๋ฅผ ๋ด์์จ๋ค.'
soup = BeautifulSoup(data.text, 'html.parser')
์ด์ ๋ถํฐ ๋์ค๋ ๋ฌธ๋ฒ์ beaurifulsoup ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฒด์ ๋ฌธ๋ฒ(syntax)
๋ด์ ์จ ๊ฒ ์ค copy selector๋ฅผ select_one ์ ๋ฃ์ด์ ์์๋ด๊ธฐ.
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
# .text, ['href'] ๋ฌธ๋ฒ์ผ๋ก ์ํ๋ ๊ฐ์ ์ ๊ทผํ๊ธฐ
print(title)
print(title.text)
print(title['href'])
๊ณตํต์ copy selector ๋ฅผ ์ฐ๋ฉด select ํจ์์ ๋ณต์๊ฐ์ copy selector ๋ฅผ ๋ฃ์ ์ ์์.
ex) '๋ฐฅ์ ' ๊ณผ '๊ทธ๋ฆฐ ๋ถ' copy selector ๋ฅผ ์ฐ์ด๋ด
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
#old_content > table > tbody > tr:nth-child(3) > td.title > div > a
# ๊ณตํต๋๋ ๋ถ๋ถ์ select ํจ์์ ๋ฃ๊ธฐ
movies = soup.select('#old_content > table > tbody > tr')
for movie in movies:
a = movie.select_one('td.title > div > a')
if a != None: # if a is not None ({๋์ผ})
print(a.text)
[๋ชฉํ] 1) rank 2) title 3) star ๊ฐ์ ธ์ค๊ธฐ
rank = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td:nth-child(1) > img')['alt']
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a').text
star = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.point').text
print(rank,title,star)
movies = soup.select('#old_content > table > tbody > tr')
print(movies)
for movie in movies:
a = movie.select_one('td:nth-child(1) > img')
if a != None:
rank = a['alt']
title = movie.select_one('td.title > div > a').text # title ๊น์ง ์ค๋ html ๋ฉ์ด๋ฆฌ ๋ด์์๋ None ์ด ์กด์ฌํ์ง ์์์๊น? ๊ทธ๋ฐ๋ฐ ์ ์ด ๋ถ๋ถ์์๋ ๊ฒฐ์ธก๊ฐ์ด ์ ๋์ค๋๊ฑฐ์ง?
star = movie.select_one('td.point').text
print(rank, title, star)
```
- ์ค์ํ ๊ฒ
- ๊ตฌ์ฒด์ ์ผ๋ก ์ํ๋ ๊ฐ์ ๊ฐ์ ธ์ฌ ๋,
html ๊ตฌ์กฐ
์๋์์ ์ด๋ป๊ฒ ์ง์นญ ํ ๊ฒ ์ธ๊ฐ.
- ๊ตฌ์ฒด์ ์ผ๋ก ์ํ๋ ๊ฐ์ ๊ฐ์ ธ์ฌ ๋,
select ๋ก '๊ณตํต๋ถ๋ถ' ์ ๊ฐ์ ธ์ฌ ๋, ์์น ์๊ฒ None ์ ๊ฐ์ ธ์ค๊ฒ ๋๋ ๊ฒฝ์ฐ๋ ๋ถ๋ช ํ ์๊น โญโญโญ
๋ฐ๋ผ์, select ๋ก ๊ณตํต ๋ถ๋ถ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ์ ๊ฒฐ์ธก๊ฐ ์ ์!
์๋ฌธ์
- ๊ฒฐ์ธก๊ฐ ๊ฒ์ฌ๋ฅผ ํ ๋, ์ ํ ๋ฒ๋ง ํ๋ฉด ๋๋๊ฑฐ์งโโโโโ
- title ์ ๋จผ์ ๋นผ์ฃผ๊ณ , rank ๋ฅผ ๋๋ ค๋ ๋ฌธ์ ๊ฐ ์๊ฒ ๋๋ค. ์ด๊ฒ ์ ๊ทธ๋ฐ๊ฑฐ์ง...
- ๋ฐ๋๋ก ์ด์ ๋ title ์ ๋จผ์ ํ๊ณ , ์ค๋์ rank ๋ฅผ ๋จผ์ ํ๋๋ฐ...
- ์ค์ํ ์
- select_one ์ ๊ธฐ๋ฐ์์ , ๊ทธ ๋ฃจํธ๋ฅผ ๋ณต๋ถํด์ select ํ๋ค.
2. ์ฐ์ ์๋ํ๋ ์ฝ๋
#jquery_๋ณ์ํ์ฉ๊ฝ์์ฃผ๊ธฐ_์์์ฝ๋
#jquery_append_์ถ๊ฐ๋ก๋ถ์ด๊ธฐ_์์์ฝ๋
3. design critic
โ ข. ํด๋ณด๊ธฐ
1. ํด๋ด
2. ์ฐ์ ์๋ํ๋ ์ฝ๋
#jquery_๋ณ์ํ์ฉ๊ฝ์์ฃผ๊ธฐ_์์์ฝ๋
#jquery_append_์ถ๊ฐ๋ก๋ถ์ด๊ธฐ_์์์ฝ๋
3. design critic
๐ญ What i learned
-
'[WEB & AI] (feat. ์ทจ์ค) > ์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ_์น๊ฐ๋ฐ์ข ํฉ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3-10_mongoDB ์์ํ๊ธฐ (0) | 2023.10.16 |
---|---|
3-9_DB๊ฐ๊ด (0) | 2023.10.16 |
3-7_์น์คํฌ๋ํ(ํฌ๋กค๋ง) ๊ธฐ์ด 1 (0) | 2023.10.13 |
3-6_requests ํจํค์ง ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2023.10.13 |
3-5_ํ์ด์ฌ ํจํค์ง ์ค์นํ๊ธฐ (4) | 2023.10.08 |