24.05.19 17:47 작성
·
157
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
2024. 05. 20. 17:12
멜론은 1위부터 50위까지가 클래스 lst50, 51위부터 100위까지가 lst100입니다.
위 코드는 if 구간에서 lst를 1위~50위로 지정하고 elif 구간에서 lst를 51위~100위로 교체하게 됩니다.
그러니까 50개만 나오게 되는거죠.
lst = lst50 + lst100 이게 중요한 겁니다.
두개를 합치쳐서 100개로 만드는거죠.
0
2024. 05. 19. 17:48
lst = lst50 + lst100 대신에 앞 시간에 설명해주셨던 if, elif, else 를 사용해봤는데 데이터가 50개만 나오는데, 왜 100개가 다 안나오는 건가요? 무슨 차이가 있는건지 궁금합니다.
2024. 05. 22. 01:04
답변 감사합니다! ^^