세조목

최종 프로젝트 6일차(24.04.01) 본문

데이터 분석 공부/프로젝트

최종 프로젝트 6일차(24.04.01)

세조목 2024. 4. 1. 20:58

최종 프로젝트 6일차입니다.

금일은 팀원들과 함께 지금까지 개별적으로 진행한 크롤링 진척 사항을 공유하고,

앞으로의 일정에 대해서 이야기 나누는 시간을 가졌습니다.

 

모두 큰 문제없이 크롤링 작업이 진행되고 있었습니다.

물론 세부적으로 손 봐야할 부분은 있지만요.

 

진행사항 공유 후 앞으로의 일정에 대해서 얘기 나눴는데

저희가 만들고자하는 데이터셋의 컬럼도 통일했습니다.

다른 컬럼들은 제가 기존에 모두 수집했던 데이터들이었으나

'주소' 데이터는 없어서 추가하는 작업을 금일 진행했습니다.

address_list = []
address = driver.find_element(By.CLASS_NAME, 'LDgIH').text
address_list.append(address)

주소 데이터를 추가하는 코드는 간단했습니다.

해당 부분만을 가져오면 됐기 때문입니다.

 

다만 문제가 됐던건 기존에는 아래 이미지의 왼쪽 빨간색 칸을 클릭했을때

확인되는 오른쪽 페이지의 빨간색 부분을 크롤링했으나

 

주소 데이터를 가져오려면 리뷰 부분을 클릭하면 안 되고

가게명 부분을 클릭해야했습니다.

 

taps = driver.find_element(By.CLASS_NAME, 'place_fixed_maintab').find_elements(By.XPATH, './/div/div/div/div/a')
if len(taps) == 5:
    driver.find_element(By.CLASS_NAME, 'place_fixed_maintab').find_element(By.XPATH, './/div/div/div/div/a[3]').click()
    sleep(2)

else:
    driver.find_element(By.CLASS_NAME, 'place_fixed_maintab').find_element(By.XPATH, './/div/div/div/div/a[4]').click()
    sleep(2)

이렇게 되면 주소 데이터를 가져온 후

다시 리뷰 페이지로 넘어가서 리뷰 데이터를 가져와야했습니다.

우측 페이지에서 리뷰 페이지 버튼에 해당하는 요소의 코드를 찾는데

생각보다 오랜 시간이 소요됐습니다.

위 코드를 보시면 a 태그를 인덱싱하고 있는데요,

a[3]에 해당하는 곳이 리뷰 탭이기때문입니다.

 

탭 개수 5개
탭 개수 6개

그런데 위 이미지에서 확인할 수 있는것처럼

어떤 가게는 탭이 5개고 어떤 가게는 탭이 6개여서

if문으로 탭이 5개일때는 a[3]을, 탭이 6개일때는 a[4]를 입력해주었습니다.

 

이렇게 주소 데이터와 리뷰 데이터를 모두 수집하는 것까지 오늘 작업했습니다.

원래 오늘 '더보기' 버튼을 클릭했을때 '거리뷰' 페이지가 열리는 문제 해결 방법을

튜터님께 여쭤보려고했으나 시간 관계상 하지 못했으므로

질문은 내일 진행하려고합니다.