def get_melon_data(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
html = response.text
soup = BeautifulSoup(html, 'html.parser')
#songs = soup.select('.d_song_list tbody tr')
songs = soup.select('tbody > tr')
data = [] # 데이터를 저장할 리스트
for song in songs:
no = song.select_one('.rank').get_text().strip()
title = song.select_one('.ellipsis.rank01').get_text().strip()
album = song.select_one('.ellipsis.rank03').get_text().strip()
likes = song.select_one('.button_etc.like').get_text().strip()
#likes = song.find('span', {'class': 'cnt'}).get_text().strip()
# 데이터를 리스트에 추가
data.append([no, title, album, likes])
return data
else:
print(f'Failed to retrieve data from {url}')
return None
if __name__ == "__main__":
# 첫 번째 페이지의 URL
# URL에 대해 데이터 가져오기
page_data = get_melon_data(url)
if page_data:
# CSV 파일 작성 (utf-8-sig 인코딩 방식으로 변경)
with open('발라드_melon_data.csv', mode='w', newline='', encoding='utf-8-sig') as file:
writer = csv.writer(file)
# 헤더 추가
writer.writerow(['NO', 'Title', 'Album', 'Likes'])
# 데이터 쓰기
writer.writerows(page_data)
print('CSV 파일이 생성되었습니다.')
else:
print('데이터를 가져올 수 없습니다.')
멜론 크롤링 하는걸 해보고 있었는데
위처럼 입력하면 좋아요 수가 0으로 계속 뜸...
누구 원인 아시는 분 있으면 제발 알려주세요 ㅠㅠ
자세히 보진 않아서 걍 예상인데 좋아요는 js로 따로 또 불러오는듯? 셀레늄 쓰면 해결될듯
ajax로 따로 불러오네..
https://www.melon.com/commonlike/getSongLike.json?contsIds=곡번호1%2C곡번호2%2C곡번호3....
이 url로 좋아요 따로 불러옴
자세한건 개발자도구 네트워크 탭에서 확인ㄱ