토트넘의 손흥민? 손흥민의 토트넘?

업데이트:

손흥민의 토트넘?

  • 내가 제일 좋아하는 취미는 축구 보는것이다.
    • 가장 좋아하는 팀은, 잉글랜드 프리미어리그에 속해있는 토트넘이다.
    • 토트넘은 손흥민 선수가 2015년에 이적하며 많은 한국 팬들이 생겼다.
  • 궁금했던 점
    • 한국 팬들은 토트넘과 어떤 연관 단어를 많이 사용하나 궁금했다.
    • 토트넘 선수 중 가장 많이 언급되는 선수는 누구인지 궁금했다.
      • 당연히 손흥민 선수가 가장 많이 언급되겠지만, 그 다음이 누구인지!
  • 이를 위해 인스타그램 태그를 크롤링하여 분석하였다.

크롤링 방법

  1. #토트넘 을 인스타그램에 검색
  2. 게시물에 있는 모든 해시태그를 ‘#’문자 제외하고 저장
  3. 다음 게시물로 이동
  4. 2~3번 n회 반복
  5. 크롤링 후 검색어인 ‘토트넘’의 유의어 제외
    • ‘토트넘’, ‘Tottenham’, ‘coys’, ‘thfc’등 한국어/영어 모두 제외
    • 크롤링을 위해 selenium을 공부

#토트넘 해시태그 살펴보기

해시태그 이미지

  • 일단 게시물 수를 확인해보니, 18만개 이상으로 적지 않았다.
    • 전체 게시물을 가져오기엔 시간이 너무 오래걸리기 때문에, 8,000개만 크롤링했다.
    • 이미지
  • 일단 몇 개의 단어가 수집되었는지 확인해보았다.
    • 이미지
    • 8만개 이상의 단어가 사용되었다.
    • ‘토트넘’ 관련 단어들을 제외한 것을 감안하면, 평균적으로 하나의 게시물 당 10~20개의 해시태그가 달렸다고 볼 수 있다.
    • 요즘은 해시태그를 안 다는것이 트렌드라고 하던데.. 이쪽은 해당이 되지 않는가보다.
  • #토트넘 내에 어떤 해시태그가 많이 쓰였나 합산하여 시각화해봤다.
    • 이미지
    • 예상했던 바와 같이, 손흥민의 이름이 가장 많이 언급되었다.
    • 10위 안에 손흥민 관련 단어만 6개로 매우 생각보다 훨씬 많았다..
      • 토트넘인가 손트넘인가
    • 30위권 안에 언급된 다른 선수는 델리알리가 있었는데, 258건에 그쳤다.
  • 어떤 선수가 가장 많이 언급되었을까?
    • 최상위 단어 100위 내에 언급된 선수의 이름을 합산하여 시각화해봤다.
      • 선수의 이름에는 선수의 애칭도 포함된다. (손흥민 = 손흥민 + 쏘니 + 슈퍼손 등)
    • 이미지
    • 역시 손흥민이 93%로 압도적으로 많았다.
    • 그 다음으로는 손흥민 선수의 절친, 델리 알리가 829건, 골키퍼 요리스가 109건이었다.
    • 놀라웠던 점은, 토트넘의 간판스타 해리 케인이 100위권에 없었다는 것이다.
      • 120위권까지 가야 DESK라인 중 두 축을 담당한 케인과 에릭센을 확인할 수 있었다.
  • 워드클라우드로 시각화해보기
    • 워드클라우드는 단어의 빈도수에 따라 크기를 조절하여 시각화해준다.
    • 상관관계나 각 단어끼리의 비교, 인과관계 파악은 어렵지만, 전체적인 맥락을 확인하는 용도로는 좋은 것 같다.
    • 이미지
    • 손흥민 관련 단어가 주를 이루고, 챔피언스리그, 프리미어리그 등의 단어도 보인다.
  • 요약하자면, 한국 팬들에게는 토트넘 = 손흥민, 좀 더 과장하면 ‘손흥민의 토트넘’이라고 생각하고 있다고 볼 수도 있을 것 같다.
    • 사실 최근 발롱도르 22위, 팬이 뽑은 최고의 선수상, 아시아인 관련 레코드들을 다 갈아치우는 등의 업적을 남기고 있기 때문에 과장이 아닐지도 모른다.
    • 여기서 문득 궁금해졌다.
      • 과연 해외 팬들은 어떻게 생각하고 있을까?

#coys 해시태그 분석하기

  • 해외 팬들의 반응을 보기 위하여 어떤 해시태그로 검색해야하나 탐색해보았다.
    • 가장 간단하게, #tottenham은 토트넘 외 다른 게시물들도 굉장히 많았다.
    • 이미지
      • 위 사진처럼, 토트넘과 관련 없는 내용의 게시물들이 꽤 많이 보였다.
      • 아마 게시물 노출을 위해 모든 인기있는 클럽들을 모두 해시태그로 사용하는 것 때문으로 보인다.
    • 여러가지 태그들을 확인했고, 결국 토트넘을 응원하는 문구인 #coys를 사용하여 크롤링하기로 결정했다.
      • #coys의 경우, 순도높게 토트넘 관련 게시물들이 많이 검색되었다. (게시물수는 100만개 이상)
  • 단어 수집하기!
    • 8,000개로 설정하여 크롤러를 실행하였으나, 중간 오류로 인해 5,339개에서 종료되었다. 다시 8,000개를 다시 수집하기에는 시간 비용이 아까워, 수집된 단어들로 분석을 진행하였다.
    • 이미지
  • 몇개의 단어가 수집되었을까?
    • 이미지
    • 일단 총 6만개 이상의 단어가 수집되었다.
    • 역시 한 게시물 당 평균 10개 이상의 해시태그가 사용되었다.
  • #coys에는 어떤 해시태그가 많이 쓰였을까?
    • 이미지
    • football, premierleague, soccer 등 축구 자체에 관련한 단어들이 많이 사용되었다.
    • 그 중에서 football 이 많이 사용된 것으로 보니, 영국인들이 많이 게시한 것으로 추측된다.
    • 손흥민 이라는 단어가 4위인 것으로 보아, 한국인들도 이 태그를 사용하는 것으로 보인다.
    • 손흥민 관련 태그가 역시 많이 보이긴 하지만 #토트넘 태그와 비교하면 비교적 빈도가 적다.
    • 또한 transfer, arsnal, liverpool 등 단어로 보니, 선수에 대한 팬심 뿐만 아니라, 축구 소식 그 자체를 전달하는 게시물도 꽤 있었을 것으로 예상된다.
  • 해외 팬들은 어떤 선수를 가장 많이 언급했을까?
    • 공평성을 위해, #손흥민 과 같이 한글로 적힌 태그는 제외하였다.
    • 물론 한글로 적힌 게시물 자체를 스킵했으면 더 좋았겠지만, 설계 당시에는 이것까지 생각하지는 못했다.
    • 이미지
    • #토트넘 과 비교했을 때 확실히 다른 모습을 보여준다.
    • 1위는 역시 손흥민이지만, 해리 케인, 델리 알리가 2, 3위 각각 500번 이상 언급되었다.
    • 감독인 무리뉴와 최근 영입된 은돔벨레, 베르흐베인, 그리고 DESK라인 중 한 축을 담당한 에릭센도 보인다.
    • 특이한 점은, 메시와 호날두도 포함되어있었는데 이 둘은 어딜 가나 빠지지 않는 존재인가보다.
  • 워드클라우드로 시각화하기
    • 이미지
    • 특정 선수에 집중되어있다기보다는, 축구, 경기, 리그에 좀 더 내용이 집중되어있다는 것을 추측해볼 수 있다.
    • 선수 중에서는 손흥민의 이름이 많이 보이지만, #토트넘 의 결과처럼 독점(?)되지는 않았다.
  • 요약
    • 해외 팬들도 토트넘 선수 이야기를 할 때에는 손흥민 선수를 가장 많이 언급한다.
    • 하지만 케인, 알리, 무리뉴 감독, 기타 이적생들을 함께 이야기한다.
    • 한국인 선수가 한국에서 뿐만 아니라, 타지에서도 큰 인기를 얻는다는 것에 대단하다는 것을 다시 느꼈다.
    • 하루 빨리 코로나 바이러스 이슈가 해결되고, 주말 새벽 예능 프리미어리그를 보고싶다.

배운 점과 느낀 점

  • 처음으로 크롤러를 만들어보았다.
    • 정말 예전부터 크롤러를 만들어보고 싶었는데, 드디어 만들어보았다. 뿌듯하다.
    • 크롤링을 하며 엄청난 오류들을 만났고 결국 해결해냈다.
      • 가장 큰 난관은 ip차단이나 매크로 방지를 어떻게 피하냐는 것이었다.
      • 이번에는 timesleep을 3초로 주며 해결하였는데, 다음부터 이 부분은 꼭 고려해야겠다.
  • 워드클라우드 만드는 법을 알았다.
    • 내가 사용한 것은 정말 기본적인 형태였다.
    • mask를 입혀 특정 모양으로 만들거나, 글짜 색을 바꾸는 옵션도 눈여겨봤다.
      • mask는 적용해보았으나, 이미지 내 노이즈로 인해 모양이 예쁘게 나오지 않아서 이번 분석에 적용하지는 않았다.
  • 숫자가 아닌 텍스트를 분석
    • 게시물의 내용이 아닌, 해시태그를 수집하였기 때문에, 형태소 등을 처리할 일이 없었다.
    • 나중에는 각종 후기나 문장들을 수집해서 가공하는 연습을 해봐야겠다.

기타

  • 장동현님의 블로그를 많이 참고하였다. -> 링크
  • 날짜 데이터도 수집은 하였지만, 크게 유의미하지 않아서 이번 분석에서는 제외하였다.
  • 자세한 코드는 이곳에! -> Github
driver = webdriver.Chrome('D:\작업\chromedriver\chromedriver')
insta_dates=[]
insta_tag_list=[]

word='coys'

driver.get('https://www.instagram.com/explore/tags/{}/'.format(word))
driver.implicitly_wait(3)
# 첫 이미지 클릭
driver.find_element_by_xpath('//*[@id="react-root"]/section/main/article/div[2]/div/div[1]/div[1]').click()
time.sleep(3)
for i in range(8000):
    driver.implicitly_wait(3)
    try:
        data = driver.find_element_by_css_selector('.C7I1f.X7jCj')    # 텍스트 복사
        text_raw = data.text    # 텍스트 내용 전달
        tags = re.findall('#[\w]+', text_raw)    # 해시태그 내용 복사
        insta_tag_list += ' '.join(tags).replace('#', ' ').split()    # 해시태그에서 '#'제거
        date = driver.find_element_by_css_selector("time.FH9sR.Nzb55" ).text    # 날짜 추출
        # 날짜가 오늘인 경우, 0주로 치환
        # 나머지는 n주로 저장
        if date.find('시간') != -1 or date.find('일') != -1 or date.find('분') != -1 or data.find('초') != -1:
            insta_dates.append('0주')
        else:
            insta_dates.append(date)
    except:
        insta_tag_list.append('error')
        insta_dates.append('error')
    try:
        # 다음 이미지 클릭
        driver.find_element_by_css_selector('a._65Bje.coreSpriteRightPaginationArrow').click()
        driver.implicitly_wait(3)
        print('{}번째 완료'.format(i+1))
    except:
        driver.close()
        print('에러로 인한 종료')
    time.sleep(3)

댓글남기기