leejinbaek / Best_food_crawler

네이버 지도 맛집 탐색 크롤러
0 stars 0 forks source link

추가 수정 요청 사항 #2

Open uwriym opened 4 months ago

uwriym commented 4 months ago

검색 시도 조건 수정

# line48 - 55
#키워드 검색
searchbox = driver.find_element(By.CLASS_NAME, "input_search")
if searchbox != driver.find_element(By.CLASS_NAME, "input_search"):
    raise ValueError("search box not found")
searchbox.send_keys(f"{keyword}")
wait.until(EC.presence_of_element_located((By.CLASS_NAME, "button_search")))
searchbox.send_keys(Keys.ENTER)
wait.until(EC.presence_of_element_located((By.ID, "searchIframe")))

위 코드에서, searchbox를 찾은 뒤 keyword를 입력하게 되는데, 이때 class가 "button_search"인 요소가 나타날 때까지 기다린 후 엔터를 입력하여 검색하게 됩니다.

Screenshot 2024-07-02 at 12 51 41

개발자도구로 html을 살펴보면, class가 "button_search"인 요소는 검색어 입력 여부와 상관 없이 항상 존재합니다. 반면, 그 밑에 class가 "btn_clear"인 요소는 input에 검색어가 입력되었을 때 나타나게 되는 요소입니다. 요소를 기다리는 목적이 검색 요청(엔터)을 보낼 준비가 되었는지 확인하는 것이라면, input에 검색어가 있을 때만 나타나는 해당 요소를 기다리는 것이 더 적절할 것으로 보입니다.


review 관련

review 위치 파악 관련 주석 추가

# line 98 - 111
#review 위치 파악
if rate is not None and new is None:
    if len(reviews) == 2:
        review = reviews[1].text
    elif len(reviews) > 2:
        review = reviews[2].text
elif rate is None and new is not None:
    if len(reviews) > 2:
        review = reviews[2].text
elif rate is None and new is None:
    if len(reviews) == 2:
        review = reviews[0].text
    elif len(reviews) == 1:
        review = None

리뷰 위치를 파악하는 데 여러 케이스가 있어 위와 같이 분리한 것으로 보여집니다. 다만, 주석을 추가한다면 각각이 어떤 케이스인지 이해하기 수월할 것 같습니다.

review 컬럼명 변경

현재 review 컬럼명은 "리뷰"이나, 수집되는 데이터는 리뷰 개수로 보입니다. 컬럼명을 "리뷰 수"로 수정하고, 데이터에서 "리뷰" 문자열을 제거하는 것이 좋을 것 같습니다. 예: "리뷰 999+" → "999+"

추가로 별점도 "별점" 문자열을 제외한 순수 별점만 수집하는 것이 좋아 보입니다. 예: "별점4.71" → "4.71"

review 샘플 데이터 추가

Screenshot 2024-07-02 at 13 17 14

추가적으로 수집할 수 있는 항목을 보자면, 매장 리뷰 샘플이 있을 것 같습니다. 확인 결과, 약 3개 정도의 샘플 리뷰를 노출시키는 것으로 보입니다. 해당 데이터들을 "리뷰1", "리뷰2", "리뷰3" 컬럼을 추가하여 수집하면 좋을 것 같습니다.

그렇다면 foods를 찾는 코드를 수정해야겠죠. 현재는 아래와 같이 매장 정보 중 일부만을 foods에 할당하고 있습니다.

foods = soup.find_all("div", class_="CHC5F")

그러나 아래 사진과 같이 매장 정보 전체(li)를 찾아 foods에 할당하게 된다면, 추후 추가적으로 수집하고자 하는 데이터가 있을 때, 더 넓은 범위에서 찾을 수 있습니다. 이렇게 되면 아래 리뷰 샘플 데이터도 수집할 수 있게 됩니다.

Screenshot 2024-07-02 at 13 20 52

최대 페이지 파라미터 추가

현재 코드에서는 마지막 페이지를 확인하여 해당 페이지까지 이동하는 것으로 확인됩니다. 최대 페이지(max_page) 파라미터를 추가하여 원하는 만큼 수집되도록 하는 기능도 추가되었으면 좋겠습니다.

leejinbaek commented 4 months ago

해당사항 전부 수정하였습니다 :) 사용자가 원하는 데이터의 수를 입력하면 그에 대응하는 데이터를 제공하도록 수정하였습니다:)