이번 시간에는 축구선수 시장가치 분석을 한 번 해보겠습니다.
Transfermarket.com 사이트에서 웹 크롤링을 통해 데이터를 가져오고 파이썬의 Pandas를 이용하여 분석을 해보겠습니다.
먼저 웹 크롤링이 먼지 알아보겠습니다.
웹 크롤링 이란 ?
웹 사이트에 있는 데이터를 추출해서 올 떄 자동화 된 프로세를 하는 것
웹 페이지의 기본 구조
- HTML (Structure) - 뼈대 , 구조
- CSS (Styling) - 디자인
- Java script (Functionality) - 기능적
Chrome 개발자 도구
- Chrome에서 오른쪽 마우스 -> 검사(N)
- F12
- 더보기 -> 도구 더보기 -> 개발자 도구
Chrome 개발자 도구에서 위 아이콘을 클릭하여 웹 페이지에 마우스 커서를 옮기면 마우스 커서가 위치한 부분의 코드가 어떻게 이루어져있는지 보여준다.
웹 크롤링에 필요한 기본 지식을 알았으니 파이썬을 이용하여 웹 크롤링을 한 번 해보자
1. 파이썬을 이용한 웹 크롤링
1-1. 크롤링에 필요한 파이썬 라이브러리
- Requests - 웹 페이지(html) 읽어 오기, 정적 웹 페이지 사용
- Selenium - 웹 페이지 자동화, 동적 웹 페이지(스크롤, 로그인, ...) 사용
- BeautifulSoup - 원하는 데이터 가져오기 (스크래핑)
1-2. Requests 라이브러리 사용법
https://requests.readthedocs.io/en/master/
에서 reqeusts 사용 코드를 한 번 보자
위처럼 요청을 보냈을 때, 200응답이 오지 않는다면
User agent 정보를 header에 넣어 요청해주자
User agent 정보는 google에 'my user agent' 를 검색해주면 알 수 있다.
1. headers 와 url 의 정보 넣어주기
headers = {'user-Agent' : '유저정보'}
url = '접속할 사이트'
2. requests.get으로 요청 한 후 status_code로 응답 확인 하
requests.get(url, headers = headers)
.status_code
1-2. Beautifulsoup 라이브러리 사용법
pip install beautifulsoup4 - beautifulsoup 설치
Beautiful Soup Documentation — Beautiful Soup 4.12.0 documentation (crummy.com)
위 사이트에서 사용법을 한 번 살펴보자
먼저 html_doc 안에 문서 정보를 저장해준 후
BeautifulSoup(html_doc, ' html.parser') 변수에 넣어준다.
1-2-1. 처음 tag의 정보 가져오는 방법
BeautifulSoup(html_doc, ' html.parser') 을 넣어준 변수뒤에 가져올 태그명을 붙혀준다
ex) soup.p
또는 find 함수를 이용한다
ex) soup.find('p')
1-2-2. 처음 tag의 속성 정보만 가져오는 방법
대괄호 뒤에 속성 정보를 넣어주면 된다.
ex) soup.p['href']
ex) soup.find('a')['href']
find_all 을 이용하면 모든 tag의 정보를 가져올 수 있다
1-2-3. 모든 'a' 태그의 'href' 속성 값 전부 가져오기
1-2-2 방식처럼 하게 되면 오류가 나게 된다
위 같은 경우는 반복문을 사용하여 가져오자
1-2-4. 텍스트만 가져오기
.text를 이용하여 텍스트만 가져올 수 있다.
1-2-5. 동일한 태그를 순서 지정해서 가져오기
위의 1-2-2에서 모든 'a'태그를 가저온 사진을 보면 'a'들이 리스트 형태로 불러져 온 것을 볼 수 있다.
따라서 find_all로 태그를 모두 가져온 뒤 리스트에 순서를 지정해주면 원하는 태그 번호를 가져올 수 있다.
1-2-6. 태그와 조건을 가진 값 찾아오기
참고 : [Python 실전 Project] 축구선수 시장가치 분석 Part1. 웹크롤링이란? (youtube.com)
[Python 실전 Project] 축구선수 시장가치 분석 Part1. BeautifulSoup 라이브러리 실습 (youtube.com)
https://www.youtube.com/watch?v=0fZSH3K4sYI&list=PL13IrJom4GzssqejzOqR2S0OukBIyufjy&t=466