ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 크롤링으로 코로나 일별 확진자 알아내기. selenium, BeautifulSoup, 크롬드라이버 사용하기.
    카테고리 없음 2020. 12. 9. 10:46
    반응형

    981004.tistory.com/7

     

    일자별 코로나 확진자수 구하기 python 크롤링 및 html 파싱.

    981004.tistory.com/6 >보건복지부_코로나19 감염_현황 api 활용신청을 통해 개인 api 키를 발급 받는다. www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15043376 공공데이터 포털 국가.." dat..

    981004.tistory.com

     

    이전 글에서는 구글 홈페이지 에서 html을 직접 긁어와서

    일별 확진자수를 구하는 방법을 알아봤다 ~~

     

     

    오늘은 파이썬 코드를 이용하여 일별 확진자 수를 알아내보려고 한다.

     

    일단 크롤링이 가능한 페이지 인지 아닌지는 url+/robots.txt 로 알아봐야 한다.

     

    google.com/robots.txt

    위의 URL을 통해 구글의 크롤링 규정을 확인해 볼 수 있다. (자세한 내용은 검색)

    Allow: /search/about

    서치 봇에 대해서 허용을 해 놓은 상태인것 같다.

     

     

     

     

    그럼 본격적으로 크롤링을 시작해보자!

     

    크롤링을 하기위해서는 자신의 브라우저에 맞는 자동화 도구가 필요하다. 파이어폭스 드라이버 크롬 드라이버 등등...

     

    나는 크롬을 사용하기 때문에 크롬 드라이버를 이용해서 해보도록 하겠다.

     

     

     

    1. 먼저 자신의 크롬 버전을 확인해 준다.

    >> 주소에 저렇게 적어도 되고

    >> 우측 상단에 땡땡땡 을 눌러 설정으로 들어와도 된다.

    >> 그리고 좌측 하단에 Chrome 정보를 클릭한다.

    그럼 이렇게 자신의 크롬 버전을 확인할 수 있다 !!!!!

     

    2. 크롬 버전에 맞는 크롬 드라이버를 설치한다.

    chromedriver.chromium.org/downloads

     

    Downloads - ChromeDriver - WebDriver for Chrome

    WebDriver for Chrome

    chromedriver.chromium.org

    위 URL로 접속하여 자신의 버전에 맞는 크롬드라이버를 클릭하고

    자신의 크롬 버전이 낮다면 크롬을 업데이트 해준다.

    나는 내 버전에 맞는 ChromeDriver 87.0.4280.88 을 우르고 들어가면

     

    각 운영체제(OS) 환경에 대한 크롬 드라이버가 존재한다.

    리눅스는 첫번째

    맥은 두번째

    윈도우는 세번째 를 눌러서 다운로드 해준다

     

    3. 다운로드 완료한 압축파일을 압축을 풀면

    chromedirver.exe가 생긴다. 실행할 필요는 없다.

     

     

     

    4. 이제 코드를 작성해 보자 !!

     

    ㄱ.먼저 필요한 라이브러리를 import 한다.

    # selenium과 webdriver는 크롬 자동화도구를 사용하기 위한 라이브러리다.
    # BeautifulSoup는 html소스를 다룰수 있는 라이브러리다.
    
    # 없을경우 설치해주자!!
    ## pip install selenium
    ## pip install bs4
    
    from selenium import webdriver
    from bs4 import BeautifulSoup

    ㄴ. 크롬드라이버를 사용하여 접속

    ## 다운로드한 크롬 드라이버의 경로 를 설정
    driver = webdriver.Chrome('D:\development\crawler\chromedriver.exe')
    ## 구글에 코로나 확진자 라는 키워드로 검색하는 url 작성
    search_key = '코로나 확진자'
    url = 'https://www.google.com/search?q={}'.format(search_key)
    
    # 검색 키워드 url로 크롬드라이버를 이용하여 접속
    driver.get(url)
    

    크롬드라이버의 경로가 올바르다면 구글 드라이버를 통해서

    코로나 확진자라는 키워드로 검색된 구글 창이 뜨게된다 !!

     

    ㄷ. 페이지 소스코드 출력

    #드라이버로 접속한 페이지의 소스를 읽어온다.
    html = driver.page_source
    
    #BeautifulSoup을 이용해서 html형식으로 파싱한다.
    #아래의 soup을 출력하면 페이지의 모든 소스를 출력하게 된다.
    soup = BeautifulSoup(html,'html.parser')
    
    # 페이지의 소스중 ol 태그를 가진 모든 소스만 soup에 저장한다.
    soup = soup.findAll("ol")
    

    위의 코드를 출력하면 ol태그에 관력된 모든 html코드가 파싱된다.

    (어떻게 ol태그를 찾았는지는 이전 글을 참조... 981004.tistory.com/7)

    [<ol class="pdswFd"></ol>, <ol><li>53회, 2월 20일</li><li>100회, 2월 21일</li><li>229회, 2월 22일</li><li>169회, 2월 23일</li><li>231회, 2월 24일</li><li>144회, 2월 25일</li><li>284회, 2월 26일</li><li>505회, 2월 27일</li><li>571회, 2월 28일</li><li>813회, 2월 29일</li><li>1,062회, 3월 1일</li><li>600회, 3월 2일</li><li>516회, 3월 3일</li><li>438회, 3월 4일</li><li>518회, 3월 5일</li><li>483회, 3월 6일</li><li>367회, 3월 7일</li><li>248회, 3월 8일</li><li>131회, 3월 9일</li><li>242회, 3월 10일</li><li>114회, 3월 11일</li><li>110회, 3월 12일</li><li>107회, 3월 13일</li><li>76회, 3월 14일</li><li>74회, 3월 15일</li><li>84회, 3월 16일</li><li>93회, 3월 17일</li><li>152회, 3월 18일</li><li>87회, 3월 19일</li><li>147회, 3월 20일</li><li>98회, 3월 21일</li><li>64회, 3월 22일</li><li>76회, 3월 23일</li><li>100회, 3월 24일</li><li>104회, 3월 25일</li><li>91회, 3월 26일</li><li>146회, 3월 27일</li><li>105회, 3월 28일</li><li>78회, 3월 29일</li><li>125회, 3월 30일</li><li>101회, 3월 31일</li><li>89회, 4월 1일</li><li>86회, 4월 2일</li><li>94회, 4월 3일</li><li>81회, 4월 4일</li><li>47회, 4월 5일</li><li>47회, 4월 6일</li><li>53회, 4월 7일</li><li>39회, 4월 8일</li><li>27회, 4월 9일</li><li>30회, 4월 10일</li><li>32회, 4월 11일</li><li>25회, 4월 12일</li><li>27회, 4월 13일</li><li>27회, 4월 14일</li><li>22회, 4월 15일</li><li>22회, 4월 16일</li><li>18회, 4월 17일</li><li>8회, 4월 18일</li><li>13회, 4월 19일</li><li>9회, 4월 20일</li><li>11회, 4월 21일</li><li>8회, 4월 22일</li><li>6회, 4월 23일</li><li>10회, 4월 24일</li><li>10회, 4월 25일</li><li>10회, 4월 26일</li><li>14회, 4월 27일</li><li>9회, 4월 28일</li><li>4회, 4월 29일</li><li>9회, 4월 30일</li><li>6회, 5월 1일</li><li>13회, 5월 2일</li><li>8회, 5월 3일</li><li>3회, 5월 4일</li><li>2회, 5월 5일</li><li>4회, 5월 6일</li><li>12회, 5월 7일</li><li>18회, 5월 8일</li><li>34회, 5월 9일</li><li>35회, 5월 10일</li><li>27회, 5월 11일</li><li>26회, 5월 12일</li><li>29회, 5월 13일</li><li>27회, 5월 14일</li><li>19회, 5월 15일</li><li>13회, 5월 16일</li><li>15회, 5월 17일</li><li>13회, 5월 18일</li><li>32회, 5월 19일</li><li>12회, 5월 20일</li><li>20회, 5월 21일</li><li>23회, 5월 22일</li><li>25회, 5월 23일</li><li>16회, 5월 24일</li><li>19회, 5월 25일</li><li>40회, 5월 26일</li><li>79회, 5월 27일</li><li>58회, 5월 28일</li><li>39회, 5월 29일</li><li>27회, 5월 30일</li><li>35회, 5월 31일</li><li>38회, 6월 1일</li><li>49회, 6월 2일</li><li>39회, 6월 3일</li><li>39회, 6월 4일</li><li>51회, 6월 5일</li><li>57회, 6월 6일</li><li>38회, 6월 7일</li><li>38회, 6월 8일</li><li>50회, 6월 9일</li><li>45회, 6월 10일</li><li>56회, 6월 11일</li><li>48회, 6월 12일</li><li>34회, 6월 13일</li><li>36회, 6월 14일</li><li>34회, 6월 15일</li><li>43회, 6월 16일</li><li>59회, 6월 17일</li><li>49회, 6월 18일</li><li>67회, 6월 19일</li><li>48회, 6월 20일</li><li>17회, 6월 21일</li><li>46회, 6월 22일</li><li>51회, 6월 23일</li><li>28회, 6월 24일</li><li>39회, 6월 25일</li><li>51회, 6월 26일</li><li>62회, 6월 27일</li><li>42회, 6월 28일</li><li>43회, 6월 29일</li><li>50회, 6월 30일</li><li>54회, 7월 1일</li><li>63회, 7월 2일</li><li>63회, 7월 3일</li><li>61회, 7월 4일</li><li>46회, 7월 5일</li><li>44회, 7월 6일</li><li>63회, 7월 7일</li><li>49회, 7월 8일</li><li>45회, 7월 9일</li><li>35회, 7월 10일</li><li>44회, 7월 11일</li><li>62회, 7월 12일</li><li>33회, 7월 13일</li><li>39회, 7월 14일</li><li>61회, 7월 15일</li><li>60회, 7월 16일</li><li>39회, 7월 17일</li><li>34회, 7월 18일</li><li>26회, 7월 19일</li><li>45회, 7월 20일</li><li>63회, 7월 21일</li><li>59회, 7월 22일</li><li>41회, 7월 23일</li><li>113회, 7월 24일</li><li>58회, 7월 25일</li><li>25회, 7월 26일</li><li>28회, 7월 27일</li><li>48회, 7월 28일</li><li>18회, 7월 29일</li><li>36회, 7월 30일</li><li>31회, 7월 31일</li><li>30회, 8월 1일</li><li>23회, 8월 2일</li><li>34회, 8월 3일</li><li>33회, 8월 4일</li><li>43회, 8월 5일</li><li>20회, 8월 6일</li><li>43회, 8월 7일</li><li>36회, 8월 8일</li><li>28회, 8월 9일</li><li>34회, 8월 10일</li><li>54회, 8월 11일</li><li>56회, 8월 12일</li><li>103회, 8월 13일</li><li>166회, 8월 14일</li><li>279회, 8월 15일</li><li>197회, 8월 16일</li><li>246회, 8월 17일</li><li>297회, 8월 18일</li><li>288회, 8월 19일</li><li>324회, 8월 20일</li><li>332회, 8월 21일</li><li>397회, 8월 22일</li><li>266회, 8월 23일</li><li>280회, 8월 24일</li><li>320회, 8월 25일</li><li>441회, 8월 26일</li><li>371회, 8월 27일</li><li>323회, 8월 28일</li><li>299회, 8월 29일</li><li>248회, 8월 30일</li><li>235회, 8월 31일</li><li>267회, 9월 1일</li><li>195회, 9월 2일</li><li>198회, 9월 3일</li><li>168회, 9월 4일</li><li>167회, 9월 5일</li><li>119회, 9월 6일</li><li>136회, 9월 7일</li><li>156회, 9월 8일</li><li>155회, 9월 9일</li><li>176회, 9월 10일</li><li>136회, 9월 11일</li><li>121회, 9월 12일</li><li>109회, 9월 13일</li><li>106회, 9월 14일</li><li>113회, 9월 15일</li><li>153회, 9월 16일</li><li>126회, 9월 17일</li><li>110회, 9월 18일</li><li>82회, 9월 19일</li><li>70회, 9월 20일</li><li>61회, 9월 21일</li><li>110회, 9월 22일</li><li>125회, 9월 23일</li><li>114회, 9월 24일</li><li>61회, 9월 25일</li><li>95회, 9월 26일</li><li>50회, 9월 27일</li><li>38회, 9월 28일</li><li>113회, 9월 29일</li><li>77회, 9월 30일</li><li>63회, 10월 1일</li><li>75회, 10월 2일</li><li>64회, 10월 3일</li><li>73회, 10월 4일</li><li>75회, 10월 5일</li><li>114회, 10월 6일</li><li>69회, 10월 7일</li><li>54회, 10월 8일</li><li>72회, 10월 9일</li><li>58회, 10월 10일</li><li>97회, 10월 11일</li><li>102회, 10월 12일</li><li>84회, 10월 13일</li><li>99회, 10월 14일</li><li>47회, 10월 15일</li><li>73회, 10월 16일</li><li>91회, 10월 17일</li><li>76회, 10월 18일</li><li>58회, 10월 19일</li><li>91회, 10월 20일</li><li>119회, 10월 21일</li><li>155회, 10월 22일</li><li>77회, 10월 23일</li><li>61회, 10월 24일</li><li>119회, 10월 25일</li><li>88회, 10월 26일</li><li>103회, 10월 27일</li><li>125회, 10월 28일</li><li>114회, 10월 29일</li><li>126회, 10월 30일</li><li>124회, 10월 31일</li><li>97회, 11월 1일</li><li>75회, 11월 2일</li><li>118회, 11월 3일</li><li>125회, 11월 4일</li><li>145회, 11월 5일</li><li>89회, 11월 6일</li><li>143회, 11월 7일</li><li>126회, 11월 8일</li><li>100회, 11월 9일</li><li>146회, 11월 10일</li><li>143회, 11월 11일</li><li>191회, 11월 12일</li><li>205회, 11월 13일</li><li>208회, 11월 14일</li><li>223회, 11월 15일</li><li>229회, 11월 16일</li><li>313회, 11월 17일</li><li>343회, 11월 18일</li><li>363회, 11월 19일</li><li>386회, 11월 20일</li><li>330회, 11월 21일</li><li>271회, 11월 22일</li><li>349회, 11월 23일</li><li>382회, 11월 24일</li><li>583회, 11월 25일</li><li>569회, 11월 26일</li><li>488회, 11월 27일</li><li>449회, 11월 28일</li><li>377회, 11월 29일</li><li>451회, 11월 30일</li><li>511회, 12월 1일</li><li>540회, 12월 2일</li><li>629회, 12월 3일</li><li>583회, 12월 4일</li><li>631회, 12월 5일</li><li>615회, 12월 6일</li><li>594회, 12월 7일</li><li>677회, 12월 8일</li></ol>, <ol class="action-menu-panel" data-ved="2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQqR8wA3oECAcQBA" jsaction="keydown:Xiq7wd;mouseover:pKPowd;mouseout:O9bKS" role="menu" tabindex="-1"><li class="action-menu-item" role="menuitem"><a class="fl" href="http://webcache.googleusercontent.com/search?q=cache:NieSOpVwRZEJ:ncov.mohw.go.kr/+&amp;cd=4&amp;hl=ko&amp;ct=clnk&amp;gl=kr" ping="/url?sa=t&amp;source=web&amp;rct=j&amp;url=http://webcache.googleusercontent.com/search%3Fq%3Dcache:NieSOpVwRZEJ:ncov.mohw.go.kr/%2B%26cd%3D4%26hl%3Dko%26ct%3Dclnk%26gl%3Dkr&amp;ved=2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQIDADegQIBxAF"><span>저장된 페이지</span></a></li></ol>, <ol class="action-menu-panel" data-ved="2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQqR8wBHoECA0QBg" jsaction="keydown:Xiq7wd;mouseover:pKPowd;mouseout:O9bKS" role="menu" tabindex="-1"><li class="action-menu-item" role="menuitem"><a class="fl" href="http://webcache.googleusercontent.com/search?q=cache:4cSe_HipTsUJ:ncov.mohw.go.kr/bdBoardList.do%3FbrdId%3D1%26brdGubun%3D11+&amp;cd=5&amp;hl=ko&amp;ct=clnk&amp;gl=kr" ping="/url?sa=t&amp;source=web&amp;rct=j&amp;url=http://webcache.googleusercontent.com/search%3Fq%3Dcache:4cSe_HipTsUJ:ncov.mohw.go.kr/bdBoardList.do%253FbrdId%253D1%2526brdGubun%253D11%2B%26cd%3D5%26hl%3Dko%26ct%3Dclnk%26gl%3Dkr&amp;ved=2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQIDAEegQIDRAH"><span>저장된 페이지</span></a></li></ol>, <ol class="action-menu-panel" data-ved="2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQqR8wEnoECAQQBg" jsaction="keydown:Xiq7wd;mouseover:pKPowd;mouseout:O9bKS" role="menu" tabindex="-1"><li class="action-menu-item" role="menuitem"><a class="fl" href="https://webcache.googleusercontent.com/search?q=cache:0MotR1zWwMUJ:https://www.gwangju.go.kr/c19/contentsView.do%3FpageId%3Dcorona2+&amp;cd=19&amp;hl=ko&amp;ct=clnk&amp;gl=kr" ping="/url?sa=t&amp;source=web&amp;rct=j&amp;url=https://webcache.googleusercontent.com/search%3Fq%3Dcache:0MotR1zWwMUJ:https://www.gwangju.go.kr/c19/contentsView.do%253FpageId%253Dcorona2%2B%26cd%3D19%26hl%3Dko%26ct%3Dclnk%26gl%3Dkr&amp;ved=2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQIDASegQIBBAH"><span>저장된 페이지</span></a></li></ol>, <ol class="action-menu-panel" data-ved="2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQqR8wE3oECAMQBg" jsaction="keydown:Xiq7wd;mouseover:pKPowd;mouseout:O9bKS" role="menu" tabindex="-1"><li class="action-menu-item" role="menuitem"><a class="fl" href="https://webcache.googleusercontent.com/search?q=cache:825KSpsDXqEJ:https://www.gwangju.go.kr/c19/+&amp;cd=20&amp;hl=ko&amp;ct=clnk&amp;gl=kr" ping="/url?sa=t&amp;source=web&amp;rct=j&amp;url=https://webcache.googleusercontent.com/search%3Fq%3Dcache:825KSpsDXqEJ:https://www.gwangju.go.kr/c19/%2B%26cd%3D20%26hl%3Dko%26ct%3Dclnk%26gl%3Dkr&amp;ved=2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQIDATegQIAxAH"><span>저장된 페이지</span></a></li></ol>, <ol class="action-menu-panel" data-ved="2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQqR8wFHoECA4QBg" jsaction="keydown:Xiq7wd;mouseover:pKPowd;mouseout:O9bKS" role="menu" tabindex="-1"><li class="action-menu-item" role="menuitem"><a class="fl" href="https://webcache.googleusercontent.com/search?q=cache:M61jXepbyBgJ:https://www.seoul.go.kr/coronaV/coronaStatus.do+&amp;cd=21&amp;hl=ko&amp;ct=clnk&amp;gl=kr" ping="/url?sa=t&amp;source=web&amp;rct=j&amp;url=https://webcache.googleusercontent.com/search%3Fq%3Dcache:M61jXepbyBgJ:https://www.seoul.go.kr/coronaV/coronaStatus.do%2B%26cd%3D21%26hl%3Dko%26ct%3Dclnk%26gl%3Dkr&amp;ved=2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQIDAUegQIDhAH"><span>저장된 페이지</span></a></li></ol>, <ol class="action-menu-panel" data-ved="2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQqR8wFXoECAYQBg" jsaction="keydown:Xiq7wd;mouseover:pKPowd;mouseout:O9bKS" role="menu" tabindex="-1"><li class="action-menu-item" role="menuitem"><a class="fl" href="http://webcache.googleusercontent.com/search?q=cache:t5VSouBrB1sJ:covid19.daegu.go.kr/00937400.html+&amp;cd=22&amp;hl=ko&amp;ct=clnk&amp;gl=kr" ping="/url?sa=t&amp;source=web&amp;rct=j&amp;url=http://webcache.googleusercontent.com/search%3Fq%3Dcache:t5VSouBrB1sJ:covid19.daegu.go.kr/00937400.html%2B%26cd%3D22%26hl%3Dko%26ct%3Dclnk%26gl%3Dkr&amp;ved=2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQIDAVegQIBhAH"><span>저장된 페이지</span></a></li></ol>, <ol class="action-menu-panel" data-ved="2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQqR8wFnoECA8QBA" jsaction="keydown:Xiq7wd;mouseover:pKPowd;mouseout:O9bKS" role="menu" tabindex="-1"><li class="action-menu-item" role="menuitem"><a class="fl" href="https://webcache.googleusercontent.com/search?q=cache:rEzCXGy-xdIJ:https://corona.seongnam.go.kr/+&amp;cd=23&amp;hl=ko&amp;ct=clnk&amp;gl=kr" ping="/url?sa=t&amp;source=web&amp;rct=j&amp;url=https://webcache.googleusercontent.com/search%3Fq%3Dcache:rEzCXGy-xdIJ:https://corona.seongnam.go.kr/%2B%26cd%3D23%26hl%3Dko%26ct%3Dclnk%26gl%3Dkr&amp;ved=2ahUKEwicx8bH4L_tAhULBZQKHQWVAKYQIDAWegQIDxAF"><span>저장된 페이지</span></a></li></ol>]

     

    ㄹ. 필요한 정보만 파싱하기.

     

    # ol태그만 파싱한 소스는 10개의 리스트로 이루어저 있다.
    #print(len(soup)) 를 통해 알 수 있다.
    # 그중 우리가 필요한 정보는 코로나 확진자 수와 날짜에 대한 정보이기 때문에 
    # 그에 해당하는 2번째 리스트 soup[1] 을 선택하고 
    # 이 정보는 <li></li>태그로 감싸저 있기 때문에 .text를 이용해서 텍스트 정보만 파싱한다.
    all_count = soup[1].text
    
    # 위의  all_count를 출력하면 일열로 쭉 ~~~ 늘어진 확진자 수와 날짜를 볼 수 있다.
    # 조금더 깔끔하게 출력하고자 replace 함수를 사용하여 줄을 띄었다.
    print(all_count.replace("일","일 \n"))
    

     

    그러면 아래와같이 보기좋게 출력되는 것을 알 수 있다.

    53회, 2월 20일 
    100회, 2월 21일 
    229회, 2월 22일 
    169회, 2월 23일 
    231회, 2월 24일 
    144회, 2월 25일 
    284회, 2월 26일 
    505회, 2월 27일 
    571회, 2월 28일 
    813회, 2월 29일 
    1,062회, 3월 1일 
    600회, 3월 2일 
    516회, 3월 3일 
    438회, 3월 4일 
    518회, 3월 5일 
    483회, 3월 6일 
    367회, 3월 7일 
    248회, 3월 8일 
    131회, 3월 9일 
    242회, 3월 10일 
    114회, 3월 11일 
    110회, 3월 12일 
    
    .....

     

    ㅁ. 전체 소스 코드

    from selenium import webdriver
    from bs4 import BeautifulSoup
    
    # 자신의 크롬 드라이브 Path 입력 !!!!!!!!!!!!!!!!!!!
    driver = webdriver.Chrome('D:\development\crawler\chromedriver.exe')
    search_key = '코로나 확진자'
    url = 'https://www.google.com/search?q={}'.format(search_key)
    driver.get(url)
    
    html = driver.page_source
    soup = BeautifulSoup(html,'html.parser')
    soup = soup.findAll("ol")
    
    all_count = soup[1].text
    print(all_count.replace("일","일 \n"))

    11줄 밖에 안되는 소스코드로 이전장에 했던 노가다를 하지 않아도 된다.

    소스코드를 짜는데는 (20분정도 걸린것 같다....)

    이러한 크롤링 코드를 짜는데 드는 시간과 손으로 노가다 하는데 걸리는 시간이 비슷할 수도 있다.

     

    그러나 이렇게 코드를 짜 놓으면 재사용이 가능해지고

    스케줄을 걸어서 매일매일 자동으로 가져오거나 업데이트를 할 수 있다 ~~!!

     

     

     

     

    ㅁ. 데이터 구워 삶기~~

     

    이제 이 데이터를 pandas, numpy등을 이용해서 잘 구워삶는것은 여러분의 몫이다.

    데이터 분석을 통해 평균과 표준편차를 구할 수 도있겠고

    통계적 분석기법을 통해 예측정보를 얻을 수도 있다.

     

    또한 AI모델링을 통해 확잔자수를 예측하는 인공지능을 개발 할 수도 있다 ~~!!

     

     

    잘 읽으셨다면 공감과 댓글 부탁 드립니다 ~~!!!

    질문은 환영입니다 ~~!!

     

     

     

    깃허브에서 보기

    github.com/ziwon-seo/google_corona_crawler/blob/main/corona_count.ipynb

    반응형

    댓글

Designed by Tistory.