๊ด€๋ฆฌ ๋ฉ”๋‰ด

Hello creators ๐Ÿ™Œ

3-15_ 3์ฃผ์ฐจ ๋ & ์ˆ™์ œ ์„ค๋ช… ๋ณธ๋ฌธ

[WEB ๊ฐœ๋ฐœ]/์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ_์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜

3-15_ 3์ฃผ์ฐจ ๋ & ์ˆ™์ œ ์„ค๋ช…

๋ถ€์‹œ๋งค๋‚˜_HA 2023. 11. 28. 07:38
728x90
๋ฐ˜์‘ํ˜•

โ… . ์ด๋ฒˆ ํšŒ์ฐจ ํ•™์Šต ๋ชฉํ‘œ (goal)


1. ๋ฐฐ์šฐ๊ณ ์ž ํ•˜๋Š” ๊ฒƒ

  • ์ง€๋‹ˆ ๋ฎค์ง ์‚ฌ์ดํŠธ์˜ '์ˆœ์œ„, ๊ณก ์ œ๋ชฉ, ๊ฐ€์ˆ˜' ๋ฅผ ์Šคํฌ๋ž˜ํ•‘ ํ•˜๊ธฐ



โ…ก. ํ•ด๋ณด๊ธฐ


1. ํ€ด์ฆˆ ํ’€ ๋•Œ ํžŒํŠธ



2. ์šฐ์„  ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ

#jquery_๋ณ€์ˆ˜ํ™œ์šฉ๊ฝ‚์•„์ฃผ๊ธฐ_์˜ˆ์‹œ์ฝ”๋“œ
#jquery_append_์ถ”๊ฐ€๋กœ๋ถ™์ด๊ธฐ_์˜ˆ์‹œ์ฝ”๋“œ

  • ์šฐ์„  ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ
    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
๋ฐ˜์‘ํ˜•

Comments