requests 임포트
import requests
웹서비스에서 url 찾아내기
requests를 통해 데이터를 크롤링 하기 위해서는 데이터를 받아올 url을 가져와야한다
이번 분석에는 삼성전자의 일별 주식 데이터를 가져와보자
크롬으로
https://m.stock.naver.com/domestic/stock/005930/price
삼성전자 - 네이버 증권
관심종목의 실시간 주가를 가장 빠르게 확인하는 곳
m.stock.naver.com
로들어가 F12를 눌러 크롬 개발자 창으로 들어가자
개발자 창을 보면
이렇게 네트워크 옵션을 볼 수 있다
ctrl+L을 눌러 네트워크 로그를 초기화 하고
좌측 웹사이트에서 더보기를 누르면
이렇게 아까는 보이지 않았던 price 관련 로그가 남는다
이 로그는 더보기를 누를때마다 서버에서 추가 정보를 가져오는 옵션이다
이렇게 쓰라고 만든 url은 아니지만
여기서 데이터를 불러오는 url을 알 수 있다
https://m.stock.naver.com/api/stock/005930/price?pageSize=10&page=5
이라는url을 분석해보면
대충 뒤에서 price정보를 10개씩 불러오고 해당 페이지가 5페이지라는 의미다
데이터 불러오기
requests.get(url)
코드에 url을 넣으면 데이터를 불러올 수 있다
url에서 정상적으로 데이터가 불러와졌다면
<Response [200]>
이 출력된다
동적사이트에서 해당 방법으로 불러오는 데이터는 json형식의 데이터로
json 데이터는 쉽게 딕셔너리 혹은 리스트로 변환이 가능하다
변환을 위해서는 .json()매소드를 사용하면 된다
ex
samsung = requests.get('https://m.stock.naver.com/api/stock/005930/price?pageSize=60&page=1')
samsung.json()
데이터를 데이터 프레임으로 변경하기
이번 게시글에서는 일자별 최고가를 불러오도록 하겠다
import pandas as pd
로 판다스를 임포트 한 후
pd.DataFrame(samsung.json())[['highPrice']]
코드로 날짜와 일별 최고가만 따로 데이터 프레임으로 뽑아내
변수에 저장해주었다
이렇게 데이터를 분리했다고 끝이 아니다
dtypes로 데이터 형식을 살펴보면
불러온 데이터들의 형식이 문자형으로 되어있다는 사실을 알 수 있다
해당 데이터를 정확하게 이용하려면
숫자와 날짜 데이터로 변경해줄 필요가 있다
samsung_high['highPrice'] = samsung_high['highPrice'].apply(lambda x: x.replace(',', '')).astype('float')
samsung_high['localTradedAt'] = pd.to_datetime(samsung_high['localTradedAt'])
코드를 실행하면
각각 시간과 실수 형태로 데이터가 변한걸 확인 할 수 있다
'파이썬 > 크롤링' 카테고리의 다른 글
파이썬 비동적 사이트 크롤링 BeautifulSoup - G마켓 상품정보 크롤링하기 (0) | 2023.09.05 |
---|