기억의 기록

[크롤링] 크롤링 기초 본문

데이터 분석/툴

[크롤링] 크롤링 기초

nethunter 2018. 7. 4. 18:08
반응형

크롤링 : 웹페이지 자체를 다운로드 하는 행위

스크레이핑 : 다운로드한 웹 페이지에서 원하는 데이터를 추출하는 작업


사용할 수 있는 라이브러리 혹은 프로그램

Wget, cURL, urllib, requests, Beautiful Soup 


기본적인 크롤링을 해보자.


https://coinmarketcap.com/ko/ 에 있는 데이터를 긁어와보자.



위의 데이터를 가져오면 아래와 같다.




원(\) 표시가 아닌 달러($)가 표시되고 있다.


이런 페이지는 크롤링을 할 수는 있지만 페이지 로딩 후 변경되는 데이터이기 때문에 단순한 크롤링으론 불가능하다.

(후처리 되는 페이지 크롤링은 다른 페이지에서 확인가능)


from bs4 import BeautifulSoup as bs

import requests

import pandas as pd


url = 'https://coinmarketcap.com/ko/'


src = requests.get(url)


src.status_code

    

soup = bs(src.content, 'html.parser')


src_tbody = soup.find("tbody")


#tr 만 먼저 추출

#tr 돌면서 td를 꺼낼것이야..

    # td 안에 있는 텍스트 들을 꺼낼것이야..  {"id":"value"}  사용 할 필요 없음

    

  #------------------------------------------------------------ 이쁘게 정리  

  #list_td.pop()

  del list_td[8:9]

  

  list_td.append( (list_td[1].split("\n\n"))[1] )

  list_td.append( (list_td[1].split("\n\n"))[2] )

  

  for l, k in enumerate(list_td):

    list_td[l] = k.replace("\n","")

  

  del list_td[7]

  del list_td[1]

  del list_td[0]

  #------------------------------------------------------------ 이쁘게 정리 끝

  

  #정리된 td 를 tr 에 넣어 주고 계속 반복

  list_tr.append(list_td)



#추출 완료 했으니 데이터 프레임에 그냥 밀어 넣고 헤더만 붙이자.  

df = pd.DataFrame(list_tr)

df.columns = ["시가총액","가격","거래량","공급량","24시간변경","대표코드","이름"]




반응형