
일단 제대로 크롤링이 되는 것부터 확인해줬다.

kbo 기록실이 잘 출력되는 것을 확인했고...

터크먼이 잘 출력된다.
여기서부터 느낌이 올텐데 <td>data</td> 이런식으로 구성이 되어있으니, 행과 열을 어떻게 구성해야할지 답이 올 것이다.
data-id는 열이 될 것이고, row 값은 이름이 될 것 인데.... 나중에 합칠 때를 생각해보면 이름 기준으로 데이터를 합치면 동명이인 선수들이 있으니, 안된다.
그러니까 'playerId'를 활용해서 playerid 가 동일한 데이터들을 쫘악~ 합쳐줄 생각이다.
여기서(https://greeksharifa.github.io/references/2020/10/30/python-selenium-usage/) 보니까 중간 파싱을 selenium 을 통해 수행할 수 있을 것 같다.
Selenium을 가져와보자.

무식하게 보이겠지만, Google Colab과 함께라면 상관없다.
여기에 추가로, Webdriver라고 하는 별도의 툴을 필요로 한다.
https://sites.google.com/chromium.org/driver/
webdriver라고 하는 이름에서부터 느낄 수 있겠지만 가상의 Web을 만들어서 해당 web에서 데이터를 추출해오는 개념이라고 한다.
그러므로, 내가 사용하는 Web 브라우저와 같은 걸 준비해야한다. 프로그램(Chrome/Firefox 등)과 버전(크롬 기준 설정 > Chrome 정보)
그런데...

엥 selenium이 없다고?

응 설치하면 돼 (세번째 줄은 webdriver 패키지다)

아니 왜?
Google Colab에서는... 별도의 옵션을 만져줘야 Selenium을 사용할 수 있다. (https://pgh268400.tistory.com/286)

Google colab 에서는 창을 띄울 수 없으므로 계속 권한 관련 오류가 나온건가 싶기도 하다.....
셀레니움은 새로운 창을 띄운다고 말씀드린 바 있다. 그러므로,
driver.get(url)
이런 식으로 지정한 url에 접속해서 창을 띄우는 것인데, 이러면 url 관련 for문으로 묶을까 싶다가도
request로 한번, 셀레니움으로 한번 url에 접속하는 것이 너무 비효율적이라 생각된다..
수정이 필요할 것 같다.
가벼운 마음으로 시작하다가 점점 산으로 가는 모습 ㅠㅠ
https://liveyourit.tistory.com/17
[파이썬] 동적 웹 크롤링 (3) - Selenium 사용법 (tag, class, xpath 등)
아래의 이전 포스팅에서 Selenium 및 브라우저 드라이버 설치, webdriver 객체 생성방법까지 알아보았다. webdriver 객체가 브라우저 제어권을 얻고 타겟 URL에 접근까지 했기 때문에 오늘은 그 후 작업
liveyourit.tistory.com

driver로 해당 웹 페이지의 element들을 크롤링해서 가져온다.
PlayerID의 요소가 Record_result >> tbody >> tr >> a href 이렇게 있으므로, element들을 가져오고
for문들을 통해 이를 저장한다. 이때 PlayerID가 포함된 a href는 text로 받아오므로, split 함수를 통해서 PlayerId만 파싱해서 가져올 수 있다.
이때 같은 웹 페이지에 있으므로 추후에 만들 기록실의 타자기록과 순서대로 저장될 것이다.
While True 안에 있는 구문은
PlayerID를 맨 앞에 저장하고 나머지 데이터들을 뒤로 해서 DataFrame을 만드는 작업을 했다.
loc는 행과 열의 이름을 알고 있을 때 가능하고
iloc는 행과 열의 번호로 접근한다.
일단의 최종적으로 다음과 같이 구현했다.


출력 결과
아직 많이 부족한 게 보인다. 딱 봐도 스파게티 코드고...
클린 코드를 요즘 읽고 있는 데 클린 코드 읽고 다른 분들이 어떻게 구현했는 지 본 다음에 다른 프로젝트를 수행하는 게 맞는 것 같다. 지금의 나는 너무 부족하달까?
ㅠㅠ
'Coding' 카테고리의 다른 글
| 과거 정리 - Untitled1.ipynb (Iris, Decision Tree) (0) | 2022.06.27 |
|---|---|
| 과거 정리 - Untitled0.ipynb (import, plt 등) (0) | 2022.06.27 |
| ubuntu 제거 후 grub 커맨드 창 해결 방법 (UEFI) (+CMD 먹통 해결) (0) | 2022.06.25 |
| [python] KBO 기록실 크롤링 - 3 (0) | 2022.05.30 |
| [python] KBO 기록실 크롤링 - 1 (0) | 2022.05.30 |