웹 데이터 분석

한영석·2022년 8월 27일
0

Project 03.

  • 웹 데이터 수집하고 정리하기

Beautiful Soup 사용법

  • HTML 기초

    • html 파일을 실행
  • 이렇게 인터넷창이 켜진다.(만들어진 인터넷창)

  • 태그로 열었으면 닫아야 실행이된다.

  • 위 실행했던 html 코드

  • Beautiful Soup 기초

    • Beautiful Soup은 태그로 되어있는 문서를 해석하는 기능을 가진 코드이다.
  • 파일로 저장된 html파일을 읽을 때

    • open : 파일명과 함께 읽기(r) / 쓰기(w) 속성을 지정
    • html.parser : Beautiful Soup의 html을 읽는 엔진 중 하나(lxml도 많이 사용)
    • prettify() : html 출력을 이쁘게 만들어 주는 기능
  • 불러온 html태그들중 body태그만 보고싶다면 soup.body로 불러올 수 있다.

  • 특정 태그만 불러올땐 find()명령으로 불러올 수 있다.

    • find()은 지정된 하나의 태그만 찾아준다.
  • 특정 태그 전부를 찾기위해선 find_all()명령으로 불러올 수 있다.

    • find_all()은 지정된 태그를 모두 찾아준다.
  • 태그안의 옵션인 class명령으로 찾고싶다면

    • find_all(class="")으로 태그안에 옵션으로 지정하여 찾아준다.
  • html 내에서 속성 id는 딱 한번만 나타난다.

    • 그래서 find_all()함수는 의미가 없다.
    • 검색결과를 list로 받고 싶다면 id라도 find_all() 함수를 사용한다.
  • 태그안의 텍스트를 출력하는 코드

  • 외부로 연결되는 링크의 주소를 알아내는 방법


예제 (1)

시카고 맛집

  • 접근태그 확인하기

  • 구글에서 검색하여 들어가기

  • 사이트 인증서 만료로 에러가 나올 수 도 있다.

import ssl # 인증없이 접속할 때 사용하는 방법을 활용하자.

req = Request(url, headers={"user-agent": ua.ie})
context = ssl._create_unverified_context()
html = urlopen(req,context=context)

  • 한 항목만 살펴보고 원하는 정보 중에서 랭킹, 가게이름, 메뉴를 볼 수 있다.

  • 구분하기

  • 50개의 가게에 대한 정보 추출

  • 데이터 저장

시카고 맛집 데이터 분석 - 하위 페이지

이전에 저장했던 url 주소에 접속하여 가격, 주소등 정보를 불러오자

  • 주소안의 찾고싶은 데이터의 태그를 확인하여 불러오자.
  • 가격과 주소가 하나의 태그안에 같이있는것을 환인했다.

  • Regular Expression - 기초

  • "$(달러기호 표시)\d+(여러개의 숫자도 표시).(\d+)?(.(점)뒤에 여러개의 숫자(\d+)?가 있을 수 있고 없을 수도 있다.)"

  • 반복문이 한번 돌때 마다 확인할 수 있는 함수 tqdm
    • 반복문 마지막에 숫자 출력으로 확인할 필요 없이 함수로 확인이 가능 하다.

  • 데이터 저장

시카고 맛집 데이터 지도 시각화

  • 데이터 불러오기

  • 구글 맵스를 이용하여 시각화하기

  • folium을 사용하여 지도 불러와 위경도를 활용하여 좌료로 표시하기


예제 (2)

네이버 영화 평점 사이트 분석

  • 네이버 영화 검색 하여 접속하여 영화랭킹(현재 상영작 기준) 탭 이동

  • 접근 URL 확인

    • 네이터영화 -> 영화랭킹 -> 평점순(현재상영영화) 선택
  • 주소에 담겨있는 정보 확인

  • 데이터 읽어오기

  • 읽어온 데이터에서 영화제목, 평점 불러오기

    • 크롬 개발자 도구 활용

    • 태그등 확인

    • 영화제목 태그 확인하기

    • 영화 제목 불러오기

    • 영화 평점 태그 확인하기

    • 평점 불러오기


자동화를 위한 코드

  • pandas의 date_range를 이용하면, 손쉽게 날짜를 만들 수 있다.

    • 위 코드는 2017. 12. 01 부터 100일을 데이터프레임형으로 생성하는 코드
  • 날짜형 데이터들은 원하는 형태로 출력이 가능하다.

  • 파이썬의 string(문자형) 데이터형은 format이라는 재미난 기능이 있다

    • {} 중괄호로 두고, format 옵션으로 손쉽게 내용을 만들 수 있다
  • 필요한 모듈 불러오고 얻고싶은 데이터를 저장할 빈 리스트를 생성한다

    • tqdm은 최신버전에서는 tqdm_notebook에서 tqdm으로 변경된상태입니다. import 할때는 그냥 tqdm으로 임폴트하면된다.
  • 이제는 100일간의 데이터를 그냥 for문으로 받아 오기만 하면 된다

  • 100일치 영화 평점 데이터도 100KB가 채 안된다

    • type을 확인해보면 point가 숫자형이아닌걸 확인할 수 있다

  • point를 수정하기쉽게 astype 명령을 이용해서 숫자형으로 변경해준다

  • 데이터 저장하기


영화 평점 데이터 정리

  • 데이터 불러오기(저장했던 파일의 경로 확인하기 필수!)

  • DataFrame의 검색 명령으로 qeury 명령도 있다

  • 그래프로 시각화 하기

  • 100일간 영화를 모두 정리

profile
코딩공부중

0개의 댓글