Notice
Recent Posts
Recent Comments
Link
think deeply
ValueError: arrays must all be same length (feat. 크롤링 에러 발생) 본문
오류 발생 코드
# 데이터프레임 생성
lyrics_df = pd.DataFrame(columns=['Song', 'Singer', 'Lyrics'])
song = []
singer = []
lyrics = []
#--------------------------------------------------------------------------------------------------
# 플레이리스트 내 수록곡 Length
song_list = driver.find_elements(By.XPATH,'//*[@id="frm"]/div/table/tbody')
song_list_li = []
for element in song_list:
tr_elements = element.find_elements(By.TAG_NAME, 'tr')
song_list_li.extend(tr_elements)
driver.implicitly_wait(2)
song_list_len = len(song_list_li)
#--------------------------------------------------------------------------------------------------
# 수록곡 수많큼 반복
for i4 in range(1, song_list_len+1): # 우선은 4곡씩만 가사 가져와보기
# 가사 페이지 클릭
lyric_button_list = driver.find_elements(By.XPATH,'//*[@id="frm"]/div/table/tbody/tr[{}]/td[4]/div/a'.format(i4))
if lyric_button_list:
lyric_button = lyric_button_list[0]
lyric_button.click()
else:
print(f"No element found for index {i4}")
driver.implicitly_wait(2)
sleep(0.3)
# 가사 element 저장
try:
r = driver.find_elements(By.XPATH,'//*[@id="d_video_summary"]')
for element in r:
try:
text = element.text
lyrics.append(text)
except Exception as e:
print(f"An error occurred while writing to the file: {str(e)}")
song_name = driver.find_elements(By.XPATH,'//*[@id="downloadfrm"]/div/div/div[2]/div[1]/div[1]')
for element in song_name:
try:
text = element.text
song.append(text)
except Exception as e:
print(f"An error occurred while writing to the file: {str(e)}")
singer_name = driver.find_elements(By.XPATH,'//*[@id="downloadfrm"]/div/div/div[2]/div[1]/div[2]/a/span[1]')
for element in singer_name:
try:
text = element.text
singer.append(text)
except Exception as e:
print(f"An error occurred while writing to the file: {str(e)}")
except: pass
driver.back()
sleep(0.5)
# 데이터 프레임
lyrics_df = pd.DataFrame({'Song': song, 'Singer' : singer, 'Lyrics': lyrics})
# 파일 저장
filename = '”사장님 지금 이 노래 뭐예요?“ 감성 넘치는 카페 BGM ❶.csv'
lyrics_df.to_csv(filename, index=False, encoding='utf-8')
해당 오류 발생
lyrics_df = pd.DataFrame({'Song': song, 'Singer' : singer, 'Lyrics': lyrics}) 부분에서 아래 오류 발생
오류 사유
가수명을 array에 담았는데, 한 노래 당 여러명이 부른 노래가 있었고, 해당 칼럼만 길이가 달랐던 것!
해결방법
lyrics_df = pd.DataFrame.from_dict({'Song': song, 'Singer' : singer, 'Lyrics': lyrics}, orient ='index').T
으로 수정
Comments