인프런 커뮤니티 질문&답변

cdi2201님의 프로필 이미지
cdi2201

작성한 질문수

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

멜론 TOP100 웹 크롤링 아티스트, 앨범, 곡 제목 가져오기

lst = lst50 + lst100 이거 대신에

작성

·

181

0

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/125.0.0.0 Safari/537.36"
}

url = "https://www.melon.com/chart/index.htm"


req = requests.get(url, headers=headers)

html = req.text

soup = BeautifulSoup(html, "html.parser")

lst50 = soup.select(".lst50")
lst100 = soup.select(".lst100")
# lst = lst50 + lst100

if lst50:
    lst = lst50
elif lst100:
    lst = lst100
else:
    print("!!!!!!!!!!!!!") 


# 자식선택자 > 는 바로 밑에 있을 때만 가능. 바로 밑에 있는게 아닐 때는 그냥 한칸 띄고 입력!

for i in lst:
    title = i.select_one(".ellipsis.rank01 a")
    singer = i.select_one(".ellipsis.rank02 > a")
    album = i.select_one(".ellipsis.rank03 > a")
    print(title.text)
    print(singer.text)
    print(album.text)
    print()

# for rank, i in enumerate(lst50, 1):
#     title = i.select_one(".ellipsis.rank01 a")
#     print(f"{rank} : {title.text}")
#     print()

print(len(lst))

lst = lst50 + lst100 대신에 앞 시간에 설명해주셨던 if, elif, else 를 사용해봤는데 데이터가 50개만 나오는데, 왜 100개가 다 안나오는 건가요? 
무슨 차이가 있는건지 궁금합니다. 

답변 2

0

김플님의 프로필 이미지
김플
지식공유자

멜론은 1위부터 50위까지가 클래스 lst50, 51위부터 100위까지가 lst100입니다.
위 코드는 if 구간에서 lst를 1위~50위로 지정하고 elif 구간에서 lst를 51위~100위로 교체하게 됩니다.
그러니까 50개만 나오게 되는거죠.
lst = lst50 + lst100 이게 중요한 겁니다.
두개를 합치쳐서 100개로 만드는거죠.

cdi2201님의 프로필 이미지
cdi2201
질문자

답변 감사합니다! ^^

0

cdi2201님의 프로필 이미지
cdi2201
질문자

lst = lst50 + lst100 대신에 앞 시간에 설명해주셨던 if, elif, else 를 사용해봤는데 데이터가 50개만 나오는데, 왜 100개가 다 안나오는 건가요? 무슨 차이가 있는건지 궁금합니다.

cdi2201님의 프로필 이미지
cdi2201

작성한 질문수

질문하기