가상화폐 정보 사이트 BITHUMB(빗썸)에서 가상화폐 정보를 가져오는 크롤링을 해보았다!
.
일단 빗썸 홈페이지에 접속한다. www.bithumb.com
빗썸(Bithumb) - 믿을 수 있는 암호화폐 거래소
비트코인, 이더리움, 비트코인캐시, 리플, 라이트코인, 대시, 모네로, 비트코인골드, 이오스, 이더리움클래식, 퀀텀, 제트캐시, 실시간 시세, 쉽고 안전한 거래
www.bithumb.com
개발자도구(f12)를 실행 -> 가상화폐 정보부분을 찾는다.
class = "coin_list"에 비트코인등의 가상화폐 정보가 있는 것으로 보인다.
name(가상화폐명)은 tr태그로 들어가고, 첫번째 td태그로 들어가서 strong안의 비트코인에 접근해야 한다.
price(가상화폐가격)는 tr태그로 들어가고, 두번째 td태그로 들어가서 strong안의 비트코인 가격에 접근해야 한다.
이제 이 정보들을 가지고 코드를 짜보자.
url에는 빗썸 주소를 적어주고, 해당 url로 요청을 하여 html을 받아온다!
.
우리가 처리하기 쉬운 데이터 형태로 바꾸기 위한 파싱작업!을 하기 위해서 BeutifulSoup을 이용한다!
.
파싱 작업이 끝난 데이터를 soup에 담아준다!
.
coins에는 위에서 우리가 알아온 정보중에서 class인 coin_list 에서 tr태그 부분을 가져와서 담아준다!
.
with open을 사용할 건데, 'bitumb.csv'를 (*bithumb.csv로 만들었어야 했는데 오타가 났다 T.T) 'w' writing으로 설정한다. 그리고 encoding='utf-8'은 한국어 깨짐을 방지하기 위함이다. as f를 통해 이를 f로 쉽게 사용할 수 있다.
.
for문을 이용하여 우리가 원하는 데이터들을 정리할 것이다.
.
name = coin.select_one('td:nth-of-type(1) p a strong').text.strip()
을 사용하여 가상화폐명만을 끌어올 것이다.
td:nth-child()를 사용했었으나, td:nth-or-type()도 가능하여 사용하였다. 하나가 안되면 나머지 다른 하나를 사용해보길 바란다.
td:nth-or-type(몇번째)는 (몇번째)에 있는 것을 가져오겠다는 것이다.
그러므로 위 코드는 첫번째 td태그의 p태그 안의 a태그 안의 strong을 가져올 것인데 그 중 text를 가져올 것이고 strip()를 통해 공백을 없애고 가져오겠다는 것이다.
왜 첫번째 td를 가져오는지는 위에서 홈페이지 개발자도구를 통하여 알아온 사실 중에서 가상화폐명은 첫번째 td태그에서 확인이 가능하기 때문이다.
.
price = coin.select_one('td:nth-of-type(2) strong').text.replace(',' , '')
를 사용하여 가상화폐 가격만을 끌어올 것이다.
왜 두번째 td를 가져오는지는 위에서 홈페이지 개발자도구를 통하여 알아온 사실 중에서 가상화폐 가격은 두번째 td태그에서 확인이 가능하기 때문이다.
그리고 replace를 통해 콤마(,)를 공백으로 바꾸어준다.
.
f.write(f'{name}, {price}\n')
으로 가상화폐명, 가격을 작성한다.
.
실행은 terminal(터미널)에서 git bithumb.py 로 실행하면 된다.
.
그러면 bitumb.csv 파일이 생성된다.
'Python2 > Crolling(크롤링)' 카테고리의 다른 글
[공대란아] NAVER(네이버)_실시간 인기 검색어_크롤링_python-chat-bot (0) | 2019.05.28 |
---|