Note
유튜브 채널 검색에 따른 채널 이름, 구독자 수, 영상 수 가져오기 본문
728x90
# 라이브러리 호출
from requests_html import HTMLSession,AsyncHTMLSession #!pip install requests_html
from bs4 import BeautifulSoup as bs # importing BeautifulSoup
import nest_asyncio #!pip install nest_asyncio
import pandas as pd
import json
import re
import time
from tqdm import tqdm
import pymysql
from sqlalchemy import create_engine
pymysql.install_as_MySQLdb()
import MySQLdb
import numpy as np
import requests
from datetime import date,datetime
from sqlalchemy import create_engine
from sqlalchemy.ext.compiler import compiles
from sqlalchemy.sql.expression import Insert
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import Chrome
import datetime as dt
url = 'http://www.youtube.com' # 기본 url 설정
# 크롬 드라이버 옵션
driver = Chrome()
driver.implicitly_wait(3)
driver.get(url)
driver.maximize_window()
# 검색창 클릭
searchform = driver.find_element_by_id("search-form")
searchform.click()
keyword = "입력하고 싶은 키워드"
# 키워드 입력
driver.find_element_by_name('search_query').send_keys(keyword)
# 검색 버튼 클릭
search = driver.find_element_by_xpath('//*[@id="search-icon-legacy"]')
search.click()
# 필터 클릭
ft = driver.find_element_by_xpath('//*[@id="container"]/ytd-toggle-button-renderer/a')
ft.click()
# 필터에서 채널 선택
channel = driver.find_element_by_link_text("채널")
channel.click()
body = driver.find_element_by_tag_name('body')
# html.find_all("yt-formatted-string", attrs={"class":'style-scope ytd-channel-name'})
# 처음엔 이걸 사용하였으나 중간에 유튜브 추천 영상이 존재
# 이 문제로 title과 나머지 변수 인덱스 불일치
# 각각 변수 지정 후 전처리하여 사용
title = html.find_all("ytd-channel-name", attrs={"class":'style-scope ytd-channel-renderer'})
video_count = html.find_all('span', {'id' : 'video-count'})
subscribers = html.find_all('span', {'id' : 'subscribers'})
'etc > Crawling' 카테고리의 다른 글
유튜브 id 구분 (0) | 2022.05.09 |
---|---|
유튜브 채널이 가지고 있는 채널 id 수집 (0) | 2022.05.03 |
유튜브 api 활용 채널 정보 가져오기 (0) | 2022.04.11 |
video url을 통한 비디오 정보 수집 (0) | 2022.04.08 |
bs4와 selenium을 활용한 video url 수집 (0) | 2022.04.07 |
Comments