본문 바로가기
AI(artificial Intelligence)

323 웹 스크래핑

by 데이터 퍼즐 2021. 7. 19.
반응형

크롤링: 데이터를 얻기 위해서 직접 수집

(스크래핑(scraping)): 특정정보를 좀 더 직접적으로 수집

 

1) 파이썬을 통해 크롤링

 

2) HTML / CSS / JAVA 

ㄴHTML은 하이퍼텍스트 마크업 언어로 복잡한 것을 간단하게 프로그래밍, elements로 구성해 마크업하고 강조하는 등의 역할을 함 : opening tag, closing tag, content, element [웹에 표현되기 위한 텍스트]

ㄴCSS는 HTML을 꾸며주는 역할을 함 [예쁘게 표현하기 위함]

ㄴJAVA는 명령어를 시키는 역할을 함

ㄴ문자열 파싱 느낌?

ㄴ<li>Hello</li>

ㄴ" li>를 확인한 순간부터 <를 찾을 때까지 가운데 텍스트를 가져온다

ㄴ왜 웹을 배우는가? 주로 웹에 있는 {텍스트}데이터를 가져오기 때문

ㄴcurl

 

 

3) DOM

ㄴ랜더링을 해줄 때 Dom이라는 자바스크립트 기능이 깔려있음 : Javascript(랜더링)>>> DOM이라는 기술을 사용함

ㄴ문서객체모델(The Document Object Model)로 objects로 문서 표현, 웹페이지를 스크립트 또는 프로그래밍 언어들에서 사용될 수 있게 연결시켜주는 역할을 담당함

 

*MDN:문서화되는 기구 (202, 204, 404, 205)

https://developer.mozilla.org/ko/docs/Web/HTTP/Status

 

 

HTTP 상태 코드 - HTTP | MDN

HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고

developer.mozilla.org

4) requests 라이브러리 : http호출을 할 때 거의 표준처럼 사용되는 라이브러리

ㄴresponse = requests.get("주소")

*응답전문

ㄴ1) # response.content

ㄴ2) # response.text(UTF-8로 인코딩된 문자열)

ㄴ3) # response.json() (json함수를 통해 사전 객체 부르기)

ㄴ나중에 다른 Parser를 배워서 적용할 수 있음 (xml, lxml, html5lib)

 

 

5) beautifulsoup 라이브러리

ㄴ python 라이브러리로 HTML, XML 파일에서 데이터를 가져오기 위함, 검색 및 수정(구문 분석 트리 검색)

ㄴ import requests
    from bs4 import BeautifulSoup 로 중첩 데이터 구조로 나타내는 객체 제공

데이터 콘텐츠 파악, F12로 검색 후 가장 처음에 있는 태그 확인 후 soup.find 함수로 크롤링, for 문으로 조건 형성 후 open-close로 해당 파일 txt화

 

 

cf: soup = BeautifulSoup(req.content, "lxml")  #raw[데이터에 더 가깝다], html.pasrser형태로 쓰겠다

ㄴquickstart로 많이 연습해보기

ㄴfind_all('p'): 내가 찾는 것 중에서 제일 첫번째 값을 가지고 온다.

***첫번째 p태크 class 속성 값 출력

ㄴfind, get을 이용> soup.find('p').get('class')[0]

ㄴ딕셔너리 형태로 이용> soup.p['title']

ㄴX.path

 

 

**reviews[0]['review_star']=7

avg=None #전체 리뷰에서 평점가져와서 평균을 구하는 부분

return avg

 

#뭔가 잘 작동이 되지 않는다면 웹브라우저를 바꿔서 다시 해볼것

[assignment]

<영화리뷰 스크래핑>

<스크래핑 데이터 데이터베이스 저장>

soup.find_all('strong')

 

스크래핑 / 크롤링 => 정기적으로 데이터 수집

cron / 스케쥴링

[프로세스]-> 달력에 맞춰 주기적으로 실행됨

네이버 영화->get->html이 아무런 방어 없이 전달됩니다.

특정 사이트 자바스크립트 실행=>방어하는 경우도 있음 = 패킷, 셀레니움

ID,Password-> 로그인 세션정보 어떻게 담을 것인지

ㄴ스크래핑시도 하다가 접속시도 안되는 경우, 봇인지 인지하고 방어하는 경우, request호출 많이 해서

 

 

반응형

'AI(artificial Intelligence)' 카테고리의 다른 글

python  (0) 2022.06.07
python- 반복, 조건 연습  (0) 2022.06.06
224 Model Selection  (0) 2021.06.18
Sprint2-3 Ridge Regression  (0) 2021.06.10
Sprint2-2 multiple-regression  (0) 2021.06.09

댓글