컴퓨터/Python

python youtube 관련 검색어 수집하기

풍경소리^^ 2020. 10. 25. 15:44

https://www.youtube.com/watch?v=E1MrXM2quWY

# [파이썬자동화]관련 검색어 수집하기|영상 올릴 때, 아무 태그나 막 집어넣는 사람들 꼭 보세요!

# 파이썬 클래스

 

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from bs4 import BeautifulSoup as bs

from openpyxl import Workbook

import time

import random

 

path = "c:/python/webdriver/chromedriver/chromedriver.exe"

driver = webdriver.Chrome(path)

driver.get('https://www.youtube.com/')

 

keyword=['가을','네일아트']

chr_array=['ㄱ','ㄴ','ㄷ','ㄹ','ㅁ','ㅂ','ㅅ', \

         'ㅇ','ㅈ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ']

 

search = driver.find_element_by_name("search_query")

# search=driver.find_element_by_xpath('//*[@id="search"]')

 

wb=Workbook()

wb.remove(wb['Sheet'])

for sheet in keyword:

    ws=wb.create_sheet(sheet)

    column=1

    search.send_keys(sheet + ' ?')

 

    for n in chr_array:

        row=1

        n_len=len(n)

        ws.cell(row, column, n)

        search.send_keys(Keys.BACK_SPACE) # 기존의 ? 한글자를 삭제하고

        search.send_keys(n)

        time.sleep(2# time.sleep( random.uniform(2,4) ) # 2~4초 랜덤한 시간

#         search.send_keys(Keys.ARROW_DOWN)

#         time.sleep(2) # time.sleep( random.uniform(2,4) ) # 2~4초 랜덤한 시간

#         search.send_keys(Keys.BACK_SPACE) # 기존의 글자뒤 공백을 삭제하고

 

        # html=driver.page_source

        # soup=bs(html,'html.parser')

        # print(soup)

        html=driver.find_element_by_xpath('//*').get_attribute('outerHTML'# element.get_attribute('innerHTML')

        soup=bs(html,'html.parser')

        res=soup.find_all('div'class_='sbqs_c')

 

        for i in res:

            row +=1

            # print(i)

            ws.cell(row, column, i.contents[1].contents[0])

        column +=1

#         for l in range(n_len-1):

#             search.send_keys(Keys.DELETE) #글자 수 만큼 지우기

#         search.send_keys(Keys.DELETE) #한글자 만큼 지우기

        

    search.send_keys(Keys.CONTROL + 'a')

    time.sleep(1)

    search.send_keys(Keys.DELETE)

    time.sleep(1)

wb.save('test.xlsx')

driver.close()