본문 바로가기
통계/크롤링(축구선수 시장가치)

Python 실전 Project 축구선수 시장가치 분석 2 ( Transfermarkt 실전 크롤링, 데이터 저장하기, 2개의 페이지 한 번에 크롤링하기)

by 만슨 2024. 3. 25.

이번 시간에는 Transfermarkt 사이트에서 실제 축구선수의 시장가치 분석을 위한 크롤링을 해보겠습니다.

 

실전 크롤링

먼저 크롤링에 필요한 라이브러리를 가져오겠습니다

 

그 후 우리가 분석할 https://www.transfermarkt.com/spieler-statistik/wertvollstespieler/marktwertetop 웹 사이트의 정보를 request를 통해서 불러오겠습니다!

 

Requests

 

응답으로 200이 온 것으로 보아 올바른 응답이 왔음을 알 수 있습니다.

 

BeautifulSoup을 통해 분석 준비를 해보겠습니다

 

BeautifulSoup

 

soup의 정보를 보니 url의 html 정보가 잘 담긴 것을 볼 수 있습니다.

 

선수들의 정보가 담긴 태그와 클래스 찾고 가져오기

이제 선수들의 정보가 담긴 태그와 클래스를 찾아 BeautifulSoup를 통해 불러와 보겠습니다.

 

위 url에서 찾아보니 태그는 tr , class 는 odd 와 even 으로 되어있는 것을 볼 수 있습니다.

 

그럼 선수들 정보를 가져와보겠습니다.

 

class 명이 'odd', 'even' 둘 다 가져와야 하기 때문에 리스트 형태로 가져오 주겠습니다.

 

첫 번째 선수인 'Jude Bellingham' 선수의 정보가 잘 가져와 진것을 볼 수 있습니다.

 

.

 

 

선수들의 정보는 'td'태그에 담겨있는것을 알  수 있다.

 

player_info에 있는 리스트들에서 'td' 태그를 빼와보자

 

가져온 'td'태그들 리스트에 0번 째의 순서를 확인 해보니 각 선수들의 순위가 나타나 있다

 

이제 가져온 td 태그 안에 있는 숫자들을 리스트 형식으로 빈 리스트에 넣어주자

 

 

선수들의 순위가 잘 담긴것을 볼 수 있다

 

이제 선수들에 정보를 다 가져오자

 

 

 

데이터 저장하기

pandas 라이브러리를 이용하여 DataFrame형식으로 데이터를 저장하겠다.

 

 

df1.to_csv('transfermarkt25.csv', index = False)로 데이터를 파일로 저장하면 된다.

 

2번 째 페이지 동시에 크롤링 하기

1 page Url
2 page Url

 

1 페이지와 2 페이지의 url이 마지막에 숫자 하나가 다른 것을 알 수 있다.

 

 

url에 f-string 문법을 적용하여 반복문(범위를 2로 하여 1,2 페이지만 크롤링 하게끔) 안에 넣고 위와 동일한 크롤링 과정들을 반복문 안에 작성 해주면 된다. 

 

여기서 주의할 점은 선수들의 정보를 담을 빈 리스트는 반복문 밖에 빼놔야 반복문이 실행 될 때 마다 리스트가 초기화 되는 문제를 해결 할 수 있다

 

 

참고 : https://www.youtube.com/watch?v=_8dIyKbGve0&list=PL13IrJom4GzssqejzOqR2S0OukBIyufjy&index=5  

https://www.youtube.com/watch?v=F-ZcXMacKlY&list=PL13IrJom4GzssqejzOqR2S0OukBIyufjy&index=6