πŸ‘Ά 내일배움단/μ›Ήκ°œλ°œ μ’…ν•© κ°œλ°œμΌμ§€

3μ£Όμ°¨_Quiz_μ›ΉμŠ€ν¬λž˜ν•‘(크둀링) 풀이 λ˜μƒˆκΉ€

MVMT 2022. 12. 31. 23:54

 

 

μ„ μƒλ‹˜ : "되게 λ§Œλ“œλŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€"

 

λ‚˜ : κ·Έλ‹ˆκΉŒ.. 방법을 μ’€ 더 λ””ν…ŒμΌν•˜κ²Œ.. μ•Œλ €μ£Όμ‹œλ©΄ μ•ˆλ κΉŒμš”...?

 

 

 

[λ‹€ μ΄ν•΄ν•˜λŠ” 것도 μ’‹μ§€λ§Œ, μ΅œλŒ€ν•œ μ΄λ ‡κ²Œ ν˜λŸ¬κ°€λŠ”κ΅¬λ‚˜ 라고 보며 μ΅μˆ™ν•΄μ§€μž!!]


 

μ›ΉμŠ€ν¬λž˜ν•‘ (넀이버 μ˜ν™” νŽ˜μ΄μ§€μ—μ„œ μˆœμœ„, 제λͺ©, λ³„μ λ§Œ λ”°λ‘œ 슀크랩 ν•΄λ³΄μž)

 

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)

 

μ‹€ν–‰ν•˜λ©΄

μ •μƒμ μœΌλ‘œ μˆœμœ„, 제λͺ©, 별점이 좜λ ₯

 

 


 

 

점점 λ‚œμ΄λ„κ°€ μ–΄λ €μ›Œμ§€λ©΄μ„œ λ°°μ›€μ˜ 속도도 λ”λŽŒμ§€κ³  μžˆμŒμ„ λŠλ‚€λ‹€.

 

또, μ—°μŠ΅ λ¬Έμ œμž„μ—λ„ 즉각 λ°˜μ‘ν•˜μ§€ λͺ»ν•˜κ³  이번 ν€΄μ¦ˆ λ¬Έμ œκ°™μ΄ ν•¨κ»˜ ν’€μ–΄μ•Ό ν•  λ•Œκ°€ λ§Žλ‹€..

 

κ·Έλž˜λ„ μ‘°κΈˆμ”©..

 

껍질 λ²—κ³  싹이 νŠΈλŠ” μƒˆμ‹Ήμ²˜λŸΌ

 

아직 μ œλŒ€λ‘œ ν™œμ§ 피어보지 μ•Šμ•˜μœΌλ‹ˆκΉŒ

 

ν¬κΈ°ν•˜μ§€ 말고, 더 ν•΄λ³΄μž!!