API 인증키를 활용한 크롤링 실습 그 세번째 공공데이터 포털 데이터 활용편이다.
사용하려고 하는 데이터에 대한 정보와 인증키 발급은 이미 전 게시글에서 마친 상태이므로, 바로 실습을 진행하겠다.
2023.08.03 - [IT & 개발공부/파이썬(Python)] - 서울시 부동산 실거래가 정보 API 크롤링 인증키 발급
서울시 부동산 실거래가 정보 API 크롤링 인증키 발급
1. 회원가입 - 우상단의 회원가입 클릭 - 보통은 일반회원일테니, 일반회원을 클릭(기업 또는 외국인 회원은 해당 절차에 따라주기 바람) - 잘 읽어보시고 동의/비동의 후 제일 마지막에 다음 단
bmil2011s.tistory.com
3. 공공데이터 포털 활용
- 이번에도 먼저 데이터 명세서를 다운로드 받아서, API 데이터 기본 정보를 조사한다.
- 요청인자, 저작권, 적재주기, 최종수정일 등을 파악하고 특히 "요청파일 타입"을 보도록 하자.
- 이번에는 다행히도 요청가능한 파일의 형태로 xml , json 이 둘 다 가능한 것으로 나온다.
- 다음의 코드를 이용하면 해당 자료를 json 데이터로 가져와 DataFrame으로 만들 수 있다.
import requests
import json
import pandas as pd
SERVICE_KEY = 'YOUR_KEY'
url = f'http://openapi.seoul.go.kr:8088/{SERVICE_KEY}/json/tbLnOpendataRtmsV/1/1000/2022/11560'
req = requests.get(url)
content = req.json()
result = pd.DataFrame(content['tbLnOpendataRtmsV']['row'])
result
* (content['tbLnOpendataRtmsV']['row']) 로 설정한 이유
* 데이터 프레임 코드 결과 참고
- 다음으로는 더 실용적인 기능을 익히기 위한 코딩이라고 할 수 있겠다. 무엇인가 하면, 서울 열린데이터 광장에서는 한 번 데이터 요청을 할 때 최대 1000건을 넘을 수 없다. 그래서 한 번에 크롤링도 1000건씩 밖에 할 수 없어서 불편한 것이다.
- 하지만 파이썬의 반복문을 이용하면, 원하는 데이터의 총량이 1000건이 넘더라도 크롤링할 수 있다. 다음의 코드를 살펴보자.
import requests
import json
import pandas as pd
SERVICE_KEY = 'YOUR_KEY'
data_list = []
for start_idx in range(1, 12001, 1000):
end_idx = min(start_idx + 999, 12000)
url = f'http://openapi.seoul.go.kr:8088/{SERVICE_KEY}/json/tbLnOpendataRtmsV/{start_idx}/{end_idx}/2022/11680'
content = requests.get(url).json()
data_list.extend(content.get('tbLnOpendataRtmsV', {}).get('row', []))
result = pd.DataFrame(data_list)
print(result)
- 먼저 반복되는 데이터들을 다 담기위해 리스트를 선언해준다.
- requests.get(url).json() 을 사용하여 해당 URL로 GET 요청을 보내고, 응답을 JSON 형식으로 파싱하여 content 변수에 저장한다(* 서울시 공공데이터 포털로부터 받아온 데이터)
- data_list.extend(content.get('tbLnOpendataRtmsV', {}).get('row', [ ]))
content.get('tbLnOpendataRtmsV', {}): 응답 데이터인 content에서 'tbLnOpendataRtmsV'라는 키를 찾고, 만약 해당 키가 존재하지 않으면, 빈 딕셔너리({})를 반환
.get('row', []): 이전 단계에서 찾은 'tbLnOpendataRtmsV' 키에 해당하는 값(딕셔너리로 반환된)에서 'row'라는 키를 찾고, 만약 'row' 키가 존재하지 않으면, 빈 리스트([])를 반환
data_list.extend: 이전 단계에서 얻은 리스트를 data_list에 확장하여 추가한다. 이렇게 함으로써 응답 데이터에서 추출한 실제 데이터를 data_list에 추가하는 역할을 한다. ( * .extend 메서드는 리스트를 다른 리스트에 추가하는 데 사용되는 파이썬 내장 함수)
이렇게 API 크롤링을 위해 필요한 기본적인 기능들을 배워, 실습을 통해 실용적 지식을 학습할 수 있었다.
'IT & 개발공부 > 파이썬(Python)' 카테고리의 다른 글
머신러닝과 교차검증(+ 하이퍼 파라미터 튜닝) (0) | 2023.08.17 |
---|---|
파이썬 머신러닝 배경 지식 & 탐색적 자료 분석 (1) | 2023.08.16 |
API 인증키를 활용한 웹 크롤링 실습 -2 (공공데이터 포털 feat.xmltodict) (0) | 2023.08.12 |
API 인증키를 활용한 웹 크롤링 실습 -1 (한국도로공사 데이터) (0) | 2023.08.11 |
scrapy를 이용한 웹 크롤링 실습 (0) | 2023.08.10 |