일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 일본워킹홀리데이계획서
- 파이썬
- 9장단위테스트
- 3장함수
- 웹개발자를위한자바스크립트의모든것
- 코딩 #개발자 #노마드북클럽 #노개북
- JavaScript
- 자바스크립트
- 플렉스박스
- 일본워홀서류
- python
- 5장형식맞추기
- 일러스트레이터강의
- es6
- 7장오류처리
- python turtle
- 파이썬터틀
- css
- 내일배움카드
- 일본워킹홀리데이이유서
- 국비지원
- 디지털기초역량훈련
- 바이트디그리
- 노개북
- 중첩된객체
- 디스트럭처링
- 독후감
- 패스트캠퍼스
- 클린코드
- flexbox
- Today
- Total
KARIU의 IT 블로그
Python - 표 데이터 쉽게 크롤링하기 본문
파이썬으로 서울 지하철 데이터를 크롤링하다가 발견한 쉽고 간편한 방법이 있어서 소개합니다.
바로 위와 같이 모든 행들이 따로따로 분리 되어 있는 것이 아니라 노선의 "서울 지하철 4호선" 처럼 모든 행들이 하나로 합쳐져 있는 것도 있고 소재지의 "노원구" , "도봉구", "강북구" 등과 같이 임의적으로 쪼개져 행들이 합쳐져 있는 복잡한 표를 깔끔하게 가져오는 방법입니다.
html_parser_table의 make2d를 이용하시면 깔끔하게 정보를 가져오실 수 있습니다.
1. 설치
html_parser_table의 make2d를 사용하기에 앞서 먼저 설치를 해줘야합니다.
위와 같은 명령을 터미널 창에 입력하여 html_parser_table을 설치합니다.
2. requests 요청과 해당 데이터가 있는 부분 추출하기
그런 다음, requests 라이브러리와 beautifulSoup 라이브러리를 이용하여 해당 표가 있는 부분의 코드를 파싱합니다.
크롬 개발자 도구를 열어 역 정보가 담겨 있는 표를 클릭해보면 어느 부분에 있는지 알 수 있습니다.
위의 표는 <table> 태그의 클래스가 "wikitable"인 곳에 들어있네요.
위와 같이 해당 url을 requests 라이브러리를 사용하여 get 요청을 보낸 뒤 beautifulSoup 라이브러리를 이용하여 해당 데이터의 html코드를 파싱하여 프린트 시켜주면 아래와 같은 결과를 얻습니다.
잘 가져왔군요.
3. make2d를 사용하여 깔끔하게 모든 데이터 가져오기
마지막으로 html_parser_table의 make2d를 이용하여 rowspan 또는 colspan으로 묶여져 있는 테이블을 한 행마다 가져올 수 있습니다.
4번째 줄과 11 ~ 14 번째 줄이 추가되었습니다.
pandas를 사용한 이유는 가져 온 데이터를 표 형식으로 쉽게 보기 위함입니다.
10번째 줄에서 data 변수에 데이터가 담겨 있는 html 코드들이 저장 되어 있습니다.
11번째 줄에서 parser_functions.make2d() 함수를 이용하여 table 변수에 data를 저장합니다.
그리고 pandas의 DataFrame을 이용해 데이터를 출력해봅시다.
rowspan으로 합쳐져 있던 행들도 하나하나 들어간 것을 확인할 수 있습니다!
+) 실은 제가 저 표를 크롤링 할 때 make2d를 몰라서 if문 써가면서 하나하나 예외처리 해줬는데 이러한 좋은 기능을 가진 함수가 있는 것을 깨닫고 현타가 왔습니다...
'프로그래밍 언어 > Python Crawling' 카테고리의 다른 글
BeautifulSoup - <br>태그에서 텍스트 가져오기 (파싱이 제대로 안되는 문제 해결) (1) | 2021.07.16 |
---|