inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

네이버 지도 웹크롤링

1092

kuen76896

작성한 질문수 1

0

 

0001.jpg

웹 브라우저에서 캡쳐했듯이 저는 왼쪽바에 표시된 부분만 크롤링하여 CSV로 변환하는 것이 목표입니다.

스타트 코딩에서 "네이버 쇼핑 아이폰 13을 크롤링" 강의를 보고 참고나 힌트를 얻을 것이라 생각했는데 첫 번째는 api를 사용해서 크롤링을 하는 구현하는 방법이거나 , 두번째는 스타트 코딩에서 네이버쇼핑 크롤링 하는 법을 다시보고 코드를 비교하면서, 개발자도구에 HTML을 오픈하여 해당 CSS를 COPY SELECTOR를 가져와서 넣은뒤 반복문으로 돌려서 가져오는 방법이 맞는건지 알고 싶습니다...

두번쨰가 가장 수월할것이라고 예상을 하였지만 csv의 결과값이 누락이 되었습니다...

 

from bs4 import BeautifulSoup
import urllib.request
import pandas as pd
import datetime

from selenium import webdriver
import time

#[code 1]
def CoffeeBean_store(result):
    CoffeeBean_URL = "https://map.naver.com/v5/entry/place/38781676?c=14140424.1634944,4509672.0214674,13,0,0,0,dh&placePath=%2Fbooking%3ForderRedirectUrl=https%253A%252F%252Fm.booking.naver.com%252Forder%252Fbizes%252F428280%252Fitems%252F3835308%253Ftheme%253Dplace%2526refererCode%253Dmenutab%26pcmap=1%26service-target=map-pc&entry=plt&area=plt"
    wd = webdriver.Chrome('c:/chromedriver.exe')
    
    for i in range(1, 10): #메뉴 수 만큼 반복한다.
        wd.get(CoffeeBean_URL)
        time.sleep(1)
        try:
           time.sleep(1)
           html = wd.page_source
           soupCB = BeautifulSoup(html, 'html.parser')
           menu_img_h2 = soupCB.select("#root > div.naver_order_contents > div > div > div.order_list > div:nth-child(2) > div:nth-child(1) > ul > li:nth-child(1) > div > a > div.info_img > span")
           menu_img = menu_img_h2[0].string
           menu_name = soupCB.select('#root > div.naver_order_contents > div > div > div.order_list > div:nth-child(2) > div:nth-child(1) > ul > li:nth-child(1) > div > a > div.info_detail > div.tit')
           print(menu_name) #메뉴명 출력하기
           menu_price = soupCB.select('#root > div.naver_order_contents > div > div > div.order_list > div:nth-child(2) > div:nth-child(1) > ul > li:nth-child(1) > div > a > div.info_detail > div.price')
           result.append([menu_img] + [menu_name] + [menu_price]) 
        except:
            continue
    return

def main():
    result = []
    print("CoffeeBean store crawling >>>>>>>>>>>>>>>>>>")
    CoffeeBean_store(result)
    
CB_tbl = pd.DataFrame(columns=('menu_img', 'menu_name' , 'menu_price'))
CB_tbl.to_csv('./CoffeeBean(신논현역점).csv' , encoding='cp949', mode='w', index=True)

이미지는 링크로 넣어도 상관은 없습니다...

현재 작성한 코드는 다음과 같습니다...

제가 작성한 부분이 가능할지 실무진 분들께 조언을 구해봅니다...

 

답변 0

volatile에 대해 질문 있습니다.

2

42

2

질문있어요!

2

49

2

수업 잘 들었습니다.

2

34

2

실행과정 질문입니다.

2

39

1