반응형
안녕하세요 곰스입니다.
N블로그 연관검색어 및 스마트블록 텍스트를 가져오기
1.N블로그 연관검색어
ㄴ 연관검색어는 "미용"을 입력을 했을 때, 아래의 화면처럼 아래의 연관된 텍스트를 연관검색어라고 합니다.
2.Python으로 연관검색어 가져오기
#step1.검색할 키워드 입력
query = pyautogui.prompt('[연관검색어] 검색어(1개)를 입력해주세요. ex.욕구')
if query == '' :
return
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 가져오기
browser.get("https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query="+keywordTxt)
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.결과 동영상
감사합니다.
반응형
'Python > Python-Crawling' 카테고리의 다른 글
[N블로그] 자동으로 로그인 하기 (1) | 2024.03.27 |
---|---|
TPype classpath 문제 해결 (0) | 2024.03.13 |
jpype 설치하기 (0) | 2024.03.13 |