크롤링: 데이터를 얻기 위해서 직접 수집
(스크래핑(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 |
댓글