번역된 책을 펴놓고 듣는다고 해도, 대본/자막이 있는 편이 좋을 것 같아서 시작한 작업인데 진짜 힘들었다. 중국은 弹幕 자막이라고 해서 영상의 각 시점에 맞는 댓글을 작성하면 화면에 저렇게 뜬다.
저런 탄막 자막 형식은 bilibili라는 중국 영상 사이트가 가장 유명한 것 같았다. 해당 동영상 사이트에서는 api 정보를 제공을 해서 탄막 자막에 대한 정보를 가져오는 것 같았지만, 내가 필요로 하는 사이트는 마오얼FM이었으므로 그 API는 사용할 수 없었다.
우선 저 자막은 오른쪽 소스 보기를 보면 알 수 있지만 매 시점마다 새로 불러와지는 부분이라 저걸 스크래핑 할 수는 없었다. 그래도 저 자막 정보가 담긴 것들이 있을 것 같아서 검사창을 정말 샅샅이 다 뒤졌다. 다행히 Network에 해당 弹幕에 대한 정보가 담긴 html이 있어서 그걸 받아오려고 했다.
우선 처음 발생한 문제... chrome webdriver로 연 창에서 로그인이 되지 않는 문제였다. 처음에 sec-fetch-site : none이라서 이게 문제인가 싶어서 정말 여러가지 방법을 다 해봤지만 로그인은 여전히 안돼서 도대체 뭐가 문제지? 싶어서 그냥 크롬 창이랑 자동화된 크롬창이랑 켜놓고 계속 봤다ㅠㅠ 하지만 계속 로그인 실패ㅠㅠㅠ
그러다가 셀레니움 웹 크롤링 봇 탐지 우회라는 글을 보게 됐고, 이 글에서 적힌 코드대로 하니까 로그인 성공 ㅠㅠ 감사합니다....
그러고 나서는 매 에피소드마다 弹幕 정보를 request해서 받아오고, 그걸 BeautifulSoup로 파싱했다.
res = requests.get('url')
html = res.text
soup = BeautifulSoup(html, 'html.parser')
spLists = []
for sp in soup.select('d') :
danmu = sp.text
sp_1 = list(sp['p'].split(","))
sp_1.append(danmu)
spLists.append(sp_1)
print(len(spLists))
근데 태그에 담긴 정보들 중에 순서에 대한 정보가 있는 것 같은데, 알 수가 없어서 살짝 노가다를 했다. 순서대로 나오는 몇 개의 대사의 태그를 비교해서 기준이 되는게 0라는 컬럼이라는 것을 확인한 후 sort 해보니 대부분 순서가 맞는 것 같았다. 그리고 자막들 중에서 내가 필요한 대사에 대한 자막의 정보도 살짝 노가다를 통해서 확인했다.
순서가 맞다!!
'python' 카테고리의 다른 글
Selenium을 이용한 파파고 번역 (0) | 2021.07.20 |
---|---|
파파고 언어감지 API를 이용해서 중국어만 추출하기 (0) | 2021.07.19 |