6주 - chap.4 웹 데이터 분석

daye·2023년 4월 5일

01

웹 크롤링

Beautiful Soup

HTML 기초

열고 닫기가 필요

<html> </html>

Beautiful Soup Basic

from bs4 import BeautifulSoup
  • 파일로 저장된 html 파일을 읽을 때
  • open: 파일명과 함께 읽기(r)/쓰기(w) 속성을 지정
  • html.parser: Beautiful Soup의 html을 읽는 엔진 중 하나(lxml도 많이 사용)
  • prettify(): html 출력을 예쁘게 만들어 주는 기능 (들여쓰기를 통해 보기좋게 만든다.)
    find / findall : p태그를 찾아준다
    find_all(class
    ="")
    find_all(id="")
    get_text()

05

크롬 개발자 도구

09***

크롬 개발자 도구의 html 문서 정보 이용하여 추출, 정렬, dataframe 만들고 엑셀 파일 저장하기

10

위키백과 데이터 가져오기

'여명의 눈동자' 위키

import urllib
from urllib.request import Request

*
html = "https://ko.wikipedia.org/wiki/{search_words}"
req = Request(html.format(search_words=urllib.parse.quote("여명의_눈동자")))
*

response = urlopen(req)

soup = BeautifulSoup(response, "html.parser")
soup

1)

  • string 내에 {}중괄호를 넣게되면 그 자리는 변수가 된다.
    = 외부에서 저 자리에 올 값을 바꿀 수 있다.
  • 바꾸는 방법 : string(여기서는 html).format

2)

  • urllib.parse.quote() (urllib라는 라이브러리에 parse라는 모듈 안에 quote라는 함수가 있다.)
    : ()괄호 안의 글자를 utf-8로 변환해준다.

3) * ~ *

  • html이라는 string 변수에 search_words라는 변수명을 가지게끔 웹주소가 들어가 있다.
  • 그 html을 '여명의_눈동자'라는 글자를 utf-8로 변환시켜서 바꿔라라고 집어넣었다.

12

List 데이터 자료형

  • 반복문(for)에서 사용하는 방법이 다른 언어에 비해 편하다

  • in 명령으로 조건문(if)에 적용하는 것도 역시 다른 명령에 비해 편하다

  • append : list 맨 뒤에 하나 추가

  • pop : 맨 뒤 자료를 지움

  • extend : 맨 뒤에 다수의 자료 추가

  • remove : 같은 이름의 자료를 지움

movies.append(['베', '아', '당'])
print(movies)

# 결과
['그', '가', '디', '먼', ['베', '아', '당']]
movies.extend(['베', '아', '당'])
print(movies)

# 결과
['그', '가', '디', '먼', '베', '아', '당']
  • 슬라이싱 : [n:m] n번째부터 m-1까지
  • insert : 원하는 위치에 자료를 삽입
  • list 안에 list를 가질 수 있다.
  • isinstance : 자료형이 list인지 확인할 수 있다.
    : isinstance(movies, list) # 결과 True

14

시카고 맛집 메인페이지 분석

17

Regular Expression

.x : 임의의 한 문자를 표현 (x가 마지막으로 끝난다)
x+ : x가 1번 이상 반복된다
x? : x가 존재하거나 존재하지 않는다
x* : x가 0번 이상 반복한다
x|y : x 또는 y를 찾는다 (or 연산자를 의미한다)

iterrow()

TQDM

https://zephyrus1111.tistory.com/305

실습

HTTP Error 403: Forbidden

https://m.blog.naver.com/PostView.nhn?blogId=naturelove87&logNo=221908009605&proxyReferer=https:%2F%2Fwww.google.com%2F

19

20

0개의 댓글