728x90
728x90
나머지 사진들은 안 찍음!
각 팀별로 엑셀 파일 추출 성공!!!!!!!!
i. 행에서 모든 'td' 태그를 찾는다
ii. 해당 행의 데이터를 저장할 빈 딕셔너리를 만든다
iii. 각 'td' 태그에 대해 다음을 수행하는 루프를 시작힌디:
- 'td' 태그의 'title' 속성을 찾습니다. 이는 야구 통계의 종류를 나타낸다. 예: AVG, G, PA 등).
- 만약 'title' 속성이 존재한다면, 이 값을 딕셔너리에 추가한다
- 만약 'td' 태그가 선수의 이름을 나타낸다면 (즉, 'class' 속성이 'stats_player'라면), 이를 딕셔너리에 추가한다
iv. 완성된 행 딕셔너리를 메인 데이터 리스트에 추가한다.
import requests
from bs4 import BeautifulSoup
import pandas as pd
team_codes = ["sk", "wo", "lg", "ht","nc", "ss","hh","lt","kt","ob"]
for team_code in team_codes:
url = f"http://eng.koreabaseball.com/Stats/BattingByTeams.aspx?codeTeam={team_code}"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
table = soup.find_all('table')[0]
data = []
tr_tags = table.find_all('tr')
for tr in tr_tags:
td_tags = tr.find_all('td')
row = {}
for td in td_tags:
title = td.get('title')
if title:
row[title] = td.text
elif 'stats_player' in td.get('class', []):
row['Player'] = td.text
if row:
data.append(row)
df = pd.DataFrame(data)
df.to_excel(f'scraped_batters_{team_code}.xlsx', index=False)
여담
팀 코드 찾느라 개발자 도구 둘러봤는데, 쓱이 아직 sk였고, 두산이 아직 Ob로 되어있었다 ㅋㅋㅋ
hh한화, ht 기아 , kt 케이티. nc 엔씨, lg 엘지, wo키움 lt 롯데 ss 삼성
바뀐지 꽤나 된 팀도 있는데 안 바꾸고 뭐하냐 ㅡㅡ
물론 실제 창에서는 저렇게 안 뜸.
728x90
300x250
'2023 공부한것들' 카테고리의 다른 글
[Github pr/merge/Conflict 해결] github CLI 사용(터미널 위주) (0) | 2023.06.12 |
---|---|
[python] [야구시뮬레이터] [결과] 스크래핑한 타자들의 성적 몽고db에 저장하기 (bs4. pymongo 등) (0) | 2023.06.05 |
[python] lfsr 기반, 밀리세컨드 단위 시간을 초기값으로 가지는/ 원하는 자릿수의 otp를 출력하는 코드 만들기 (0) | 2023.06.05 |
[야구시뮬레이터] [결과] 모든 투수진 스크래핑해 엑셀 파일로 저장하기 (0) | 2023.06.03 |
[야구시뮬레이터] [결과] 한 팀의 투수진 스크래핑하기 (0) | 2023.06.03 |