축구선수 몸값 분석 웹 크롤링 (1)

해당 프로젝트는

https://www.inflearn.com/course/%EC%9B%B9%ED%81%AC%EB%A1%A4%EB%A7%81-%EC%B6%95%EA%B5%AC%EC%84%A0%EC%88%98%EB%B6%84%EC%84%9D#curriculum

 

[무료] [Python 실전] 웹크롤링과 데이터분석 : 전세계 축구 선수 몸값 분석 - 인프런 | 강의

손흥민 통산 100호골 기념 프로젝트! 트랜스퍼마켓(Transfermarkt) 실전 크롤링 & 데이터 분석, - 강의 소개 | 인프런...

www.inflearn.com

강의를 참고하여 진행하였다. 파이썬 웹크롤링의 기본적인 requests와 bs4를 이용하였으며,

데이터를 구조화하는데 있어서 padas 라이브러리를 사용하였다.

 

import requests
from bs4 import BeautifulSoup
import pandas as pd
import time

headers = {'User-Agent' : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"}

url = "https://www.transfermarkt.com/spieler-statistik/wertvollstespieler/marktwertetop"

r = requests.get(url, headers=headers)
r.status_code

# BeautifulSoup()으로 웹페이지 분석하기
soup = BeautifulSoup(r.text, 'html.parser')
# 선수들의 정보가 담긴 태그와 클래스 찾기
player_info = soup.find_all('tr', class_ = ['odd','even'])

# 7개 정보(이름, 나이, 소속팀, 몸값 등등)를 담을 빈 리스트 만들기
number = []
name = []
position = []
age = []
nation = []
team = []
value = []

# player_info에서 'td' 태그만 모두 찾기
for info in player_info:
    player = info.find_all("td")
# 해당 정보를 찾아서 각 리스트에 추가하기
    number.append(player[0].text)
    name.append(player[3].text)
    position.append(player[4].text)     # 들여쓰기 주의!
    age.append(player[5].text)
    nation.append(player[6].img['alt'])  # 태그의 특정 속성 값을 뽑아내는 코드, 딕셔너리 문법 사용( 속성 : key, 값 : value)
    team.append(player[7].img['alt'])
    value.append(player[8].text.strip())

트랜스퍼마르크트 사이트를 url 변수로 담아 requests 요청을 받고 bs를 통해 웹페이지 소스를 받아온다.

트랜스퍼마르크트의 선수 리스트 html 태그

반복문과 bs의 find 메서드를 사용하여 특정 태그 값을 List 형태로 반환할 수 있다.

player[0], 첫 번째 리스트 : 킬리안 음바페 정보

  • \xa0는 NBSF(줄 바꿈 없는 공백)이라는 문자열에 들어가는 공백 문자이다.
    이를 제거하기 위해서 strip() 내장 함수를 사용한다.

 

  • requests 라이브러리를 복습함과 동시에 흥미로운 주제인 축구와 접목하여 데이터를 분석하는 방법을 배울 수 있었다. 또한 필요한 tag 값을 추출하여 데이터를 저장하는 작업도 배우게 되었다.