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 는 데이터프레임을 생성하고 관리하기 위해 사용된다

 

  1. URL을 설정하고 해당 URL에 GET 요청을 보내서 HTML을 가져온다
  2. BeautifulSoup을 사용하여 HTML을 처리한다
  3. player_info_list라는 빈 리스트를 만든다. 이 리스트는 모든 선수 정보를 저장한다.
  4. .sub_tab.team_select ul li 선택자를 사용하여 모든 팀 정보를 가져온다.
  5. 각 팀에 대해 반복문을 실행한다. team.find('h4').text를 사용하여 팀 이름을 가져온다.
  6. 'tbody tr' 선택자를 사용하여 해당 팀의 모든 선수 정보를 가져온다.
  7. 각 선수에 대해 반복문을 실행한다.
  8. player_info라는 빈 딕셔너리를 만든다. 이 딕셔너리는 선수 정보를 저장하는 용도로 사용된다. "팀 이름" 키에는 위에서 가져온 팀 이름을 저장한다.
  9. 선수 이름을 가져와서 player_info 딕셔너리에 "이름" 키에 저장한다.
  10. 선수 번호, 포지션, 생년월일, 신장/체중 정보를 가져와서 player_info 딕셔너리에 해당 정보를 추가한다.
  11. 가져온 선수 정보를 player_info_list 리스트에 추가한다
  12. 모든 선수 정보를 수집하면, player_info_list 리스트를 사용하여 데이터프레임인 df를 생성한다
  13. df.to_excel() 메서드를 사용하여 "players.xlsx"라는 파일로 데이터프레임을 엑셀 파일로 저장한다. 인덱스를 엑셀 파일에 포함시키지 않도록 index=False로 설정한다.

코드를 실행하면 선수 정보가 스크래핑되어 데이터프레임으로 변환되고 "players.xlsx"라는 엑셀 파일로 저장된다

728x90
300x250

+ Recent posts