Python/Python-Crawling

[N블로그] 연관검색어 및 스마트블록 텍스트 가져오기

오마로 2024. 3. 22. 17:28
반응형

안녕하세요 곰스입니다. 
N블로그 연관검색어 및 스마트블록 텍스트를 가져오기 

1.N블로그 연관검색어
 ㄴ 연관검색어는 "미용"을 입력을 했을 때, 아래의 화면처럼 아래의 연관된 텍스트를 연관검색어라고 합니다. 

2.Python으로 연관검색어 가져오기  

        #step1.검색할 키워드 입력
        query = pyautogui.prompt('[연관검색어] 검색어(1개)를 입력해주세요. ex.욕구')
        if query == '' :
            return
        url = 'https://www.naver.com/'
        processSearch(query, url)

1)검색어를 입력받기

검색어 입력받기

 ㄴ 입력받은 검색어(query)를 가지고 있다가 화면에 넣어주면 됩니다. 
2)화면 호출하기
 ㄴ 연관검색어 검색하기를 호출합니다. 

#연관검색어 검색하기
def processSearch(keywordTxt, url):
 
    browser = setBrowser(url)
 

 ㄴ setBrowser를 생성해서 호출합니다. 

#브라우저 세팅하기
def setBrowser(url):
    chrome_options = Options()
    chrome_options.add_experimental_option("detach", True)
    chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])       # 불필요한 에러 메시지 없애기
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument("disable-gpu")
    # options.add_argument('headless')
    chrome_options.add_argument('window-size=1920x1080')
    chrome_options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36")
    browser = webdriver.Chrome(options=chrome_options)                                  #웹드라이브 연동
    browser.implicitly_wait(3)                                                                                  #암묵적으로 웹자원로드를 3초 기다린다.
    #step3.크롬드라이버로 원하는 url로 접속
    browser.get(url)
    return browser

3)생성한 브라우저에 요소를 찾아서 검색어를 넣어주기

    # 검색어 창을 찾아 search 변수에 저장 (By.XPATH 방식)
    search_box = browser.find_element(By.CLASS_NAME, 'search_input')
    search_box.send_keys(keywordTxt)
    search_list = browser.find_elements(By.CLASS_NAME, 'kwd_txt')

  "미용"이라는 단어를 찾아서 입력을 하고, 거기에 나오는 연관검색어 요소(kwd_txt)를 찾습니다. 

4)연관검색어(search_list)를 엑셀로 가져오기

saveSearchExcel(browser, keywordTxt, search_list)
# [연관검색어] 결과 저장히기
def saveSearchExcel(browser, keywordTxt, result):
    resultLen = len(result)                                #B2의 데이타 > "미용" 의 갯수 확인
    print("resultLen :", resultLen)  # 출력: 3

    searchSheet = wb.sheets[1
   
    searchSheet["B2"].value = "연관검색어 : " + keywordTxt
       
    i = 2
    for element in result:
       
        # 왼쪽 선긋기
        searchSheet[i, 1].api.Borders(xw.constants.LineStyle.xlContinuous).Weight = xw.constants.BorderWeight.xlThin
        # 오른쪽  선긋기
        searchSheet[i, 1].api.Borders(xw.constants.BordersIndex.xlEdgeRight).LineStyle = xw.constants.LineStyle.xlContinuous
        searchSheet[i, 1].api.Borders(xw.constants.BordersIndex.xlEdgeRight).Weight = xw.constants.BorderWeight.xlThin
        # 상단  선긋기
        searchSheet[i, 1].api.Borders(xw.constants.BordersIndex.xlEdgeTop).LineStyle = xw.constants.LineStyle.xlContinuous
        searchSheet[i, 1].api.Borders(xw.constants.BordersIndex.xlEdgeTop).Weight = xw.constants.BorderWeight.xlThin
        # 하단  선긋기
        searchSheet[i, 1].api.Borders(xw.constants.BordersIndex.xlEdgeBottom).LineStyle = xw.constants.LineStyle.xlContinuous
        searchSheet[i, 1].api.Borders(xw.constants.BordersIndex.xlEdgeBottom).Weight = xw.constants.BorderWeight.xlThin
       
        # 가로 정렬 설정 (가운데 정렬)
        searchSheet[i, 1].api.HorizontalAlignment = xw.constants.HAlign.xlHAlignCenter
        # 세로 정렬 설정 (가운데 정렬)
        searchSheet[i, 1].api.VerticalAlignment = xw.constants.VAlign.xlVAlignCenter
           
        searchSheet[i, 1].value = element.text
        i = i + 1
        print(element.text)

 

3.Python으로 스마트블록 Text 가져오기

   
    smart_list = browser.find_elements(By.CLASS_NAME, 'ksAYh6ATNCo3fkIuTRoq')
   
    saveSmartBlockExcel(browser, keywordTxt, smart_list)

1)브라우저에 url을 "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query="+미용
2)해당 페이지에서 요소( ksAYh6ATNCo3fkIuTRoq )를 찾아서 해당 스마트블록(smart_list)를 가지고 옵니다. 


3)해당 글을 엑셀로 저장합니다.  

# [연관검색어 > 스마트블록] 결과 저장히기
def saveSmartBlockExcel(browser, keywordTxt, result):
    resultLen = len(result)             # B2의 데이타 > "미용" 의 갯수 확인
    print("resultLen :", resultLen)     # 출력: 3

    searchSheet = wb.sheets[1]
   
    searchSheet["C2"].value = "스마트블록 : " + keywordTxt
       
    i = 2
    for element in result:
       
        # 왼쪽 선긋기
        searchSheet[i, 2].api.Borders(xw.constants.LineStyle.xlContinuous).Weight = xw.constants.BorderWeight.xlThin
        # 오른쪽 선긋기
        searchSheet[i, 2].api.Borders(xw.constants.BordersIndex.xlEdgeRight).LineStyle = xw.constants.LineStyle.xlContinuous
        searchSheet[i, 2].api.Borders(xw.constants.BordersIndex.xlEdgeRight).Weight = xw.constants.BorderWeight.xlThin
        # 상단 선긋기
        searchSheet[i, 2].api.Borders(xw.constants.BordersIndex.xlEdgeTop).LineStyle = xw.constants.LineStyle.xlContinuous
        searchSheet[i, 2].api.Borders(xw.constants.BordersIndex.xlEdgeTop).Weight = xw.constants.BorderWeight.xlThin
        # 하단 선긋기
        searchSheet[i, 2].api.Borders(xw.constants.BordersIndex.xlEdgeBottom).LineStyle = xw.constants.LineStyle.xlContinuous
        searchSheet[i, 2].api.Borders(xw.constants.BordersIndex.xlEdgeBottom).Weight = xw.constants.BorderWeight.xlThin
       
        # 가로 정렬 설정 (가운데 정렬)
        searchSheet[i, 2].api.HorizontalAlignment = xw.constants.HAlign.xlHAlignCenter
        # 세로 정렬 설정 (가운데 정렬)
        searchSheet[i, 2].api.VerticalAlignment = xw.constants.VAlign.xlVAlignCenter
           
        searchSheet[i, 2].value = element.text
        i = i + 1
        print(element.text)

    # 크롬 드라이버 종료
    browser.quit()
   

 

4.결과엑셀 

검색어에 대한 연관검색어 및 스마트블록
연관검색어 : 미용 스마트블록 : 미용
미용실 입질 미용
미용실 예약 인기 카페글
미용재료쇼핑몰 미용 영업신고증
미용학원 미용알바
미용사자격증 미용 가위
미용재료 미용 주사제
미용실드라이기 반려견 미용
미용가위 미용 학원
근처 미용실 치와와 미용
애견미용 인기글
  미용 협회
  미용 베드
  출장 미용
  유기견 미용
  동물미용
  성신여대 미용
  개 미용

 

5.결과 동영상
 

연관검색어_스마트블록_가져오기.mp4
12.37MB

 

감사합니다.

반응형

'Python > Python-Crawling' 카테고리의 다른 글

[N블로그] 자동으로 로그인 하기  (0) 2024.03.27
TPype classpath 문제 해결  (0) 2024.03.13
jpype 설치하기  (0) 2024.03.13