Selenium으로 Text data 크롤링

P4·2023년 5월 25일
0
post-thumbnail

TED 사이트

브라우저를 실행하여 테드 사이트 열기

driver = webdriver.Chrome()
driver.get("https://www.ted.com/talks")

CSS Selector를 이용하여 HTML 태그와 태그 사이의 text 데이터 가져오기

driver.find_element(By.CSS_SELECTOR, "#banner-secondary").text

제목 데이터 가져오기

contents = driver.find_elements(By.CSS_SELECTOR, "#browse-results > .row > .col")
print(len(contents))

가장 처음 텍스트 데이터 가져오기

contents[0].find_element(By.CSS_SELECTOR, '.media__message .ga-link').text

전체 제목 데이터 가져오기

titles = []
for content in contents:
    title = content.find_element(By.CSS_SELECTOR, '.media__message .ga-link').text
    titles.append(title)
print(titles[:3], len(titles))

셀렉트 박스를 선택후 데이터 가져오기

  • 이벤트 발생 기능(값 입력, 클릭 이벤트등)은 화면에 해당 엘리먼트가 보여야 합니다.

  • 한국어 선택

driver.find_element(By.CSS_SELECTOR, '#languages [lang="ko"]').click()

전체 제목 데이터 가져오기

contents = driver.find_elements(By.CSS_SELECTOR, "#browse-results > .row > .col")
titles = []
for content in contents:
    title = content.find_element(By.CSS_SELECTOR, '.media__message .ga-link').text
    titles.append(title)
print(titles[-3:])

링크 데이터 크롤링 (속성(attribute)값 가져오는 방법)

links = []
for content in contents:
    link = content.find_element(By.CSS_SELECTOR, '.media__message .ga-link').get_attribute("href")
    links.append(link)
print(links[-3:])

브라우저 종료

driver.quit()

Headless

  • 브라우저를 화면에 띄우지 않고 메모리상에서만 올려서 크롤링하는 방법
  • window가 지원되지 않는 환경에서 사용이 가능
  • chrome version 60.0.0.0 이상부터 지원합니다.

현재 사용중인 크롬 버전 확인

driver = webdriver.Chrome()
version = driver.capabilities["browserVersion"]
print(version)
driver.quit()

headless 사용

options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome(options=options)
driver.get("https://www.ted.com/talks")
text = driver.find_element(By.CSS_SELECTOR, "#banner-secondary").text
driver.quit()
print(text)
profile
지식을 담습니다.

0개의 댓글