728x90
728x90
결과물
밑에 쭉 이어진다
모든 팀의 투수진을 전부 저장함
import requests
from bs4 import BeautifulSoup
import pandas as pd # pandas import 확인
# 웹 페이지 URL
url = "http://eng.koreabaseball.com/Teams/PlayerSearch.aspx"
# GET 요청으로 HTML 가져오기
response = requests.get(url)
html = response.text
# BeautifulSoup을 사용하여 HTML 파싱
soup = BeautifulSoup(html, "html.parser")
# 선수 정보를 저장할 리스트 생성
player_info_list = []
# 모든 팀에 대한 정보를 가져옵니다.
for team in soup.select('.sub_tab.team_select ul li'):
# 팀 이름을 가져옵니다.
team_name = team.find('h4').text
# 이 팀의 모든 선수 정보를 가져옵니다.
for player_row in soup.select('tbody tr'):
player_info = {"팀 이름": team_name}
# 선수 이름을 가져옵니다.
player_info["이름"] = player_row.th.a.text.strip()
# 선수 번호, 포지션, 생년월일, 신장/체중 정보를 가져옵니다.
for td in player_row.find_all("td"):
title = td.get("title")
if title:
player_info[title] = td.text.strip()
# 가져온 선수 정보를 리스트에 추가
player_info_list.append(player_info)
# 리스트를 데이터프레임으로 변환
df = pd.DataFrame(player_info_list)
# 엑셀 파일로 저장
df.to_excel("players.xlsx", index=False)
라이브러리를 import한다 :
request는 웹 페이지에 get 요청을 보내기 위해 사용된다
beautifulsoup는 html 파싱을 위해 사용된다
pandas 는 데이터프레임을 생성하고 관리하기 위해 사용된다
- URL을 설정하고 해당 URL에 GET 요청을 보내서 HTML을 가져온다
- BeautifulSoup을 사용하여 HTML을 처리한다
- player_info_list라는 빈 리스트를 만든다. 이 리스트는 모든 선수 정보를 저장한다.
- .sub_tab.team_select ul li 선택자를 사용하여 모든 팀 정보를 가져온다.
- 각 팀에 대해 반복문을 실행한다. team.find('h4').text를 사용하여 팀 이름을 가져온다.
- 'tbody tr' 선택자를 사용하여 해당 팀의 모든 선수 정보를 가져온다.
- 각 선수에 대해 반복문을 실행한다.
- player_info라는 빈 딕셔너리를 만든다. 이 딕셔너리는 선수 정보를 저장하는 용도로 사용된다. "팀 이름" 키에는 위에서 가져온 팀 이름을 저장한다.
- 선수 이름을 가져와서 player_info 딕셔너리에 "이름" 키에 저장한다.
- 선수 번호, 포지션, 생년월일, 신장/체중 정보를 가져와서 player_info 딕셔너리에 해당 정보를 추가한다.
- 가져온 선수 정보를 player_info_list 리스트에 추가한다
- 모든 선수 정보를 수집하면, player_info_list 리스트를 사용하여 데이터프레임인 df를 생성한다
- df.to_excel() 메서드를 사용하여 "players.xlsx"라는 파일로 데이터프레임을 엑셀 파일로 저장한다. 인덱스를 엑셀 파일에 포함시키지 않도록 index=False로 설정한다.
코드를 실행하면 선수 정보가 스크래핑되어 데이터프레임으로 변환되고 "players.xlsx"라는 엑셀 파일로 저장된다
728x90
300x250