Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- id # tr # 환경변수
- Ubuntu 20.04
- 부스트캠프
- 웹/모바일
- 백준 #baekjoon # 2563
- 운영체제론
- 네이버 부스트 코스
- 후기
- Virtual Box 7.0.6
- 네이버
- 보기 편하라고 만든
- 8기
Archives
- Today
- Total
Miner
DAY 07 본문
10/24 파이썬으로 웹 데이터를 크롤하고 분석하기(2)
1. HTTP
인터넷과 웹
- 두 컴퓨터를 연결하는 네트워크(Network)의 탄생
- 이 네트워크를 묶어 근거리 지역 네트워크(Local Area Network, LAN) 탄생
- 범지구적으로 연결된 네트워크 - Internet 탄생
- 웹 --> 인터넷에서 정보를 교환할 수 있는 환경(World Wide Web), 시스템 (수단)
웹에서 정보 주고받기
- 손님이 직원에 요청 | "programmers.co.kr 정보 주세요
- 요청에 대하여 직원이 처리 | 작업 진행
- 상황에 따라서 직원이 손님에게 응답 | "여기 있습니다" / "요청이 이상한데요"
- 클라이언트 (정보를 요청하는 컴퓨터) / 서버 (정보를 제공하는 컴퓨터)
HTTP 의 구조
- Hypertext Transfer Protocol
- 웹 상에서 정보를 주고받기 위한 약속
- 클라이언트에서 서버로 정보를 요청하는 것을 HTTP 요청 (request) 라고 한다.
- 요청된 정보에 대해 서버가 클라이언트에게 응답하는 것을 HTTP 응답 (response) 라고 한다.
- HTTP 도 요청/응답에 대한 정보를 담는 Head와 내용물인 Body 로 나뉜다.
2. 웹페이지와 HTML
- 웹 속에 있는 문서 하나는 웹 페이지
- 웹 페이지의 모음은 웹 사이트
- 웹 브라우저는 HTML 요청을 보내고, HTTP 응답에 담긴 HTML 문서를 우리가 보기 쉬운 형태로 화면을 그려주는 역할을 담당
◈ 웹 페이지는 HTML 형식으로 되어있고, 웹 브라우저는 우리가 HTTP 요청을 보내고, 응답받은 HTML 코드를 렌더링 해준다.
- <!DOCTYPE html> 를 통해 HTML5 임을 명시
- 웹 스크래핑 관점에서 우리가 원하는 내용이 HTML 문성의 어디에 있고 어떤 태그로 묶여있는지 관찰해야 한다.
3. python을 이용해 HTTP 통신하기
requests 라이브러리 >> python을 이용해서 간단히 HTTP 통신을 진행할 수 있는 라이브러리
pip install requests
정보를 달라고 요청하기, GET
import requests
res = requests.get("https://www.naver.com")
res
결과 : <Response [200]>
res.headers
# 헤더 확인
res.text[:1000]
# body를 텍스트 형태로 확인
정보 갱신하는 것을 요청하기, POST
payload = {"name": "Hello", "age": 13}
requests.post("https://webhook.site/4bf07901-2400-4893-8964-5edde596eed1",payload)
결과 : <Response [200]>
res.status_code
# 상태 코드를 확인하기
결과 : 200
4. 윤리적으로 웹 스크래핑, 크롤링 진행하기
- 웹 스크래핑 : 웹 페이지들로 부터 우리가 원하는 정보를 추출 / 특정한 목적으로 특정 웹 페이지에서 데이터를 추출하는 것 ex) 날씨 데이터 가져오기, 주식 데이터 가져오기 ..
- 웹 크롤링 : 핵심은 색인 / 크롤러를 이용해서 웹 페이지의 정보를 인덱싱 / URL을 타고다니며 반복적으로 데이터를 가져오는 과정 - 데이터 색인 ex) 검색 엔진의 웹 크롤러
※ 올바르게 HTTP 요청하기
- 웹 스크래핑/크롤링을 통해 어떤 목적을 달성하고자 하는가?
- 나의 웹 스크래핑/크롤링이 서버에 영향을 미치지는 않는가?
- 로봇 배제 프로토콜(REP) : 웹 브라우징은 사람이 아닌, 로봇이 진행할 수 있다.
- robots.txt : 웹 크롤러들은 이 규칙을 지키면서 크롤링을 진행한다. / User-agent, Disallow, Allow 등의 키워드를 통해 사용 / User-agent: * Allow: / --> 모든 user-agent 에 대하여 접근을 허용
res = requests.get("https://www.programmers.co.kr/robots.txt")
print(res.text)
#결과 :
User-Agent: *
Disallow: /users
Disallow: /managers
Disallow: /cable
Disallow: /admin
Disallow: /start_trial
Disallow: /pr/*
Allow: /
Sitemap: https://programmers.co.kr/sitemaps/sitemap.xml
5 웹 브라우저가 HTML을 다루는 방법
- DOM (Document Object Model) : 문서 객체 모델 / HTML문서를 브라우저가 이해할 수 있도록 만든 Tree 자료구조
- 브라우저의 렌더링 엔진은 웹 문서를 로드한 후, 파싱을 진행
- DOM 은 실제로 굉장히 복잡하다. 각 노드를 객체로 생각해 문서를 더욱 편리하게 관리할 수 있다.
- 결론적으로 브라우저는 HTML을 파싱해서 DOM으로 바꾸고 원하는 요소를 동적으로 변경해 원하는 요소를 쉽게 찾을 수 있게 한다.
- 파이썬으로 HTML을 분석하는 HTML Parser가 필요하다.