최대규모의 OTT player인 틱톡의 채널페이지를 크롤링하는 프로젝트입니다.
비교적 난이도가 높아 인터넷에 레퍼런스가 부족한 것이 현실입니다. 어떤 속성자로 시작해야 할지에 대한 연구가 선행되어야만 비교적 깔끔한 구현이 가능한 것 같습니다. 틱톡 크롤링 시도하시는 분들 화이팅!
요구사항
- 채널페이지 정보 크롤링
- 세부사항 : 제목, 작성자, 조회수, 링크
코드 구현
def scrape_channel_videos(url):
driver.get(url)
time.sleep(5) # 페일지 로딩 기다림
videos = []
scroll_pause_time = 2 # 스크롤 기다림
howmanyvideo = 50
while len(videos) < howmanyvideo:
# 설명부를 찾아감
video_description = driver.find_elements(By.CSS_SELECTOR, 'div.미공개')
for video in video_description[len(videos):]:
video_data = {}
# 부모 엘리먼트를 찾아감
root_element = video.find_element(By.XPATH, '..')
description_text = video.text
video_data['Title'] = description_text
try:
link_element = video.find_element(By.XPATH, '..//a[1]')
video_data['Link'] = link_element.get_property('href')
except Exception as e:
video_data['Link'] = 'N/A'
try:
creater_element = root_element.find_element(By.XPATH, '..//a[2]/h4/p[@data-e2e="미공개"]')
video_data['Creator'] = creater_element.text
except Exception as e:
video_data['Creator'] = 'N/A'
videos.append(video_data)
if len(videos) >= howmanyvideo:
break
# 스크롤 제어
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(scroll_pause_time) # 스크롤을 위한 기다림
return videos
코드 실행
# URL for the page
videos_url = 'https://www.tiktok.com/music/미공개'
videos = scrape_channel_videos(videos_url)
driver.quit()
구현을 위한 핵심내용
틱톡은 대부분 실시간 페이지 구성을 하는 JS 형태로 구현된 동적 페이지이므로 Selenium을 이용한 코드 구현을 하였으며
복잡한 페이지 구조에 따른 시작 지점의 선택자를 파악하는 것이 관건인 사이트입니다.
그리고 조회수는 리스트페이지에서 충분히 제공하고 있지 않아 상세페이지를 접근하여 가져오는 구조로 구현하였습니다.
실행결과
개발문의 환영합니다.
Start an Open Chat on KakaoTalk!
Tap the link to get started.
웍투오토] 웹크롤링 & 업무자동화 개발문의
https://open.kakao.com/o/sF2plaVg
'웹크롤링' 카테고리의 다른 글
캐스모(다음카페) 검색 자동화 구현 (8) | 2024.10.18 |
---|