URL 살펴보기 (Uniform Resource Locator)
| URL = http://news.naver.com:80/main/read.nhn?mode=LSD&mid=shm&sid1=105&oid=001&aid=0009847211#da_727145 | |||
| https:// | Protocol | 규칙 | |
| news | Sub Domain | 어떤 서버 컴퓨터를 찾아갈지에 대한 IP가 들어있다. C(URL)-->DNS(URL->IP)-->S: WAS(,DB) # ~ 아파트 동 수 찾아가기 |
|
| naver.com | Domain | ||
| 80 | port | 서버컴퓨터에서 어떤 어플리케이션을 찾아 들어갈지의 정보가 들어있다. 80,443포트는 URL에서 생략가능 (웹서비스는 보통 80,443/ DB는 3306, 27017포트를 쓴다.) # ~ 아파트 호 수 찾아가기 |
|
| /main/ | path | 서버 컴퓨터의 디렉토리까지 온다. 여기까지 요청하면 html코드를 받아볼 수 있다. |
|
| read.nhn | page | (~file) 디렉토리의 파일까지 받아올 수 있다. | |
| ?mode=LSD&mid= shm&sid1= 105&oid= 001&aid= 0009847211 |
query | 내가 보고싶은 정보가 어떤 건지 클라이언트 컴퓨터가 서버 컴퓨터로 특정 데이터를 요청할 때 필요하다. ('aid = 몇 번의 데이터를 보여줘' 라는 정보이다.) |
|
| #da_727145 | fragment | 전체 웹 페이지 중 어떤 위치를 화면에 띄워줄 지 정해준다. 웹크롤링할 땐 많이 사용하진 않는다. |
|
# DNS서버(Domain Name Server)는 인터넷 망에 존재하며 URL을 IP로 바꿔준다.
| 클라이언트 컴퓨터 | 인터넷 망 | 서버 컴퓨터 |
| IP주소 | IP주소 | |
| 어플리케이션 : 브라우저 | 어플리케이션 : WAS | |
| URL입력 | DNS(URL-->IP) |
브라우저의 역할 : 네트워크(request, response), 랜더링(화면으로 만들어 보여주기)
request: 클라이언트에서 서버로 요청하는 과정이다.
response: URL에 따라서 html코드파일,자바스크립트,pdf,exe 등을 클라이언트로 보내준다.
request 방식
get방식
query를 이용해 데이터 요청하는 방식
>>문제1: 데이터를 많은 양의 데이터를 요청하고 싶을 때 url길이제한에 걸려서 곤란)
>>문제2: url에 데이터가 노출되기 때문에 패스워드 등 노출되면 안되는 정보 곤란)
post방식
쿼리가 아닌 body(안보이지만 url아래 숨겨져있다)에 데이터가 포함, 노출 안됨
큰 데이터를 서버쪽으로 요청하거나 노출하면 안되는 정보 요청할 때 사용.
이미지 압축
png: 로고 등 만들어진 이미지 압축시 효율적
jpg: 사진 등 직접 찍은 실사이미지 압축시 효율적
용어(쿠키, 세션,캐시)
Cookie: 클라이언트에 저장하는 문자열 데이터. 도메인별로 따로 저장함
로그인 아이디 저장 , 광고시 많이 사용함(내가 봤던 상품의 정보)
1개 클라이언트에 300개 도메인당 20개 쿠키 하나당 4kbyte
Session: 클라이언트와 서버의 접속/연결정보를 서버에 저장하는 객체 데이터
브라우저와 연결하면 세션아이디가 생성된다.
세션아이디를 쿠키에 저장함으로써 로그인 연결 유지한다.
같은 브라우저로 같은 서버에 접속하면 세션아이디가 같다.
Cache: 클라이언트나 서버의 매모리에 저장하여 빠르게 데이터를 가져올 목적의 저장소.
(하드디스크가 아닌 메모리에 저장해서 빨리 쓴다는 것)
# pc 주요 물리 장치
CPU (연산)
메모리RAM (저장) 비싸다. 성능이 좋다.
하드디스크SSD (저장)가격낮음. 성능이 안좋다.
로딩(=하드디스크의 데이터 중 실행해야하는 일부를 메모리에 담는 과정이다.)
HTTP Status Code
: request-response 과정에서 잘 되고 잇는지 확인하는 코드값
2XX: 정상적으로 잘된다.
3XX: 캐쉬를 쓰고 있다.
4XX: request error. 데이터를 요청했는데 요청한 주소에 대한 서버가 없다. (Ex) 404에러
5XX: server error: 서버는 있는데 서버 웹어플리케이션쪽에 데이터가 없다.
Web Crawing
웹 페이지 종류
동적 페이지 : 이벤트가 발생하면 서버에서 데이터를 가져와 화면을 변경하는 페이지
페이지의 새로고침 발생 안함
Json
정적 페이지 : 이벤트에 의한 화면 변경이 없는 페이지
페이지의 URL변경 없이는 데이터가 바뀌지 않음
이벤트 발생시 새로고침 발생
HTML
웹 크롤링 종류
requests 이용하는 방법
- Json 문자열로 받아 파싱 (주로 동적 페이지)
- HTML 문자열로 받아 파싱 (주로 정적 페이지)
selenium 이용하는 방법
-브라우저를 열어 데이터를 받는 방법
# 크롤링 방법 속도 : requests Json > requests HTML > selenium
- requests Json #적은 문자열 많은 데이터
- requests HTML # 많은 문자열 적은 데이터
- selenium # 직접 브라우저도 열어야하고 파이썬 코드와 연결해야 해서 느림
크롤링 절차
1. url = '알아낸 url'
URL 알아내기 #웹 브라우저의 개발자 도구를 사용한다.
2. response변수 = requests.get(url)
URL로 requests 이용해 서버에 데이터 요청하기
3. data변수 = response변수.json()
받아온 json/html 문자열 데이터를 list/dict 데이터로 바꿔주기 #parsing
4. 데이터 프레임 이름 = pd.DataFrame(data변수)[지정할 열]
list/dict 데이터를 데이터 프레임으로 만들어주기 #csv, excel로 저장해 쓸 수 있다.
Web Language & Framework
Client
• HTML #텍스트와 레이아웃 담당
• CSS - less, sass #스타일 담당 (글자크기 ,색, 테두리 색)
• Javascript - vue.js, react.js, angelar.js, backborn.js #이벤트 설정, 더보기 버튼 누르면 데이터 더 가져오기
Server ( was에 들어갈 프로그램 개발시 사용)
• Python - Django, Flask
• Java - Spring
• Ruby - Rails
• Javascript - Nodejs (Express)
• Scala - Play
**dir(객체) -->이 객체에서 쓸 수 있는 변수, 함수 등이 뭐가 있는지 알려준다.
함수+Shift+Tab --> 어떤 기능의 함수인지, 옵션은 무엇이있는지, 뭘 적어 넣어야하는지 알려준다.
help(객체변수, 함수) -->설명을 볼 수 있다.
import FinanceDataReader as fdr >>금융데이터 수집할때 좋은 패키지
https://financedata.github.io/posts/finance-data-reader-users-guide.html
https://meyerweb.com/eric/tools/dencoder/>> 한글이라 URL이 깨질때 좋은 사이트
'오늘의 복습 정리' 카테고리의 다른 글
| 머신러닝_성능평가 (0) | 2023.03.07 |
|---|---|
| 머신러닝_용어/사용법 (0) | 2023.03.06 |
| 데이터 수집(API) (0) | 2023.02.24 |
| 데이터 분석/이변량 분석(target이 범주일 때) (0) | 2023.02.23 |
| 데이터 분석/이변량 분석(target이 숫자일 때) (0) | 2023.02.22 |