3주차 과제

-기술과제
호스팅이 무엇인지 ?
AWS 회원가입, EC2서비스 프리티어(1년공짜) 인스턴스 생성해보기 (OS아무거나, Ubuntu 추천)
SSH가 무엇인지 ?
SSH가지고 생성한 EC2서비스 연결까지 해보기
-->https://eatitstory.tistory.com/m/8 다른 글에 작성

-코드과제
BeautifulSoup4 모듈 (HTML DOM접근을 도와주는 모듈) 
requests모듈을 이용을해서 html을 가져온다음
BS모듈에가 html을 준다
내가 원하는 부분을 선택해서 원하는데이터 불러와서 print했을때 잘 찍혀나오게끔 해보기
 

*코드과제

(1)

import requests
from bs4 import BeautifulSoup

 
저번에 배운 requests 모듈과 같은 방식으로 패키지에서 다운 받아 이번에 사용하게 될 beautifulSoup모듈을 설치해준다.
설치 후 아래와 같이 모듈을 가져온다.
 
 

(2)

해외축구 : 네이버 스포츠 (naver.com)

해외축구 : 네이버 스포츠

스포츠의 시작과 끝!

sports.news.naver.com

 
네이버 해외축구 사이트의 html을 가져온 후 data변수에 집어 넣어준다.
BeautifulSoup함수(BeautifulSoup(html 문자열, parsing 방법))를 활용하여 data를 파싱해준다.
(파싱이란 파이썬이 html을 알아듣기 편하게 바꿔주는 방식)
 

data = requests.get('https://sports.news.naver.com/wfootball/index')
soup = BeautifulSoup(data.text, 'html.parser')

 

(3)

사이트 들어가서 f12 눌러서 개발자도구에서 빨간 동그라미 눌러 아스날에 커서 갔다대면 소스가 보인다.
copy sector로 소스를 복사한다.
 

 
tbody 아래에 tr들이 순위표에 있는 팀들의 소스가 있다.
 

(4)

soccer_rank = soup.select('#_team_rank_epl > table > tbody > tr')

 
우선 soccer_rank에 soup.select()란 함수를 사용하여 requests로 가져온 html 중 해외축구 순위표에 있는 데이터들이 담겨있는  tr class를 찾아온다.
 

(5)

for tr in soccer_rank:
    span = tr.select_one("td > div > div.info > span")

    if span:
        print(span.text)
    else:
        print("Span not found")

tr.select_one(select와 다르게 하나의 class를 찾는다)을 이용하여 다양한 데이터가 담겨있는 tr에서 순위표에 있는 팀들의 이름이 있는 span class 가져와 출력한다.
 

(6)

import requests
from bs4 import BeautifulSoup

data = requests.get('https://sports.news.naver.com/wfootball/index')
soup = BeautifulSoup(data.text, 'html.parser')

soccer_rank = soup.select('#_team_rank_epl > table > tbody > tr')

for tr in soccer_rank:
    span = tr.select_one("td > div > div.info > span")

    if span:
        print(span.text)
    else:
        print("Span not found")

        # _team_rank_epl > table > tbody > tr:nth-child(2) > td:nth-child(2) > div > div.info > span  ->>2위 리버풀 주소
        #각 팀별로 나눠지는 tr들까지만 select하고/ 각 tr에서 이름이 담겨있는 span class를 가져와 출력하기
출력화면

 

2주차 과제

- 파이썬 데이터형태 전부 파악하고 함수까지 끝내기-->다른 글에서 작성
https://eatitstory.tistory.com/3
https://eatitstory.tistory.com/4
https://eatitstory.tistory.com/5

 

파이썬-함수

*함수 반복되는 코드를 사용할 때가 있는데. 이를 좀 더 효율적으로 만들기 위해 사용된다. def 함수_이름(매개변수): 수행할_문장 ... return 리턴값 *키워드 매개변수,kwargs >>> print_kwargs(a=1) {'a': 1} >>

eatitstory.tistory.com

 

파이썬-제어문

*제어문 프로그램을 만드는 것도 집 짓기와 매우 비슷한 면이 있다. 나무, 돌, 시멘트와 같은 재료는 자료형이 되고 집의 뼈대를 이루는 철근은 제어문에 해당한다. 조건문 다음에 콜론(:)을 잊지

eatitstory.tistory.com

 

파이썬-자료형

*자료형 자료형이란 프로그래밍을 할 때 쓰이는 숫자, 문자열 등과 같이 자료 형태로 사용하는 모든 것을 뜻한다. 프로그램의 기본이자 핵심 단위가 바로 자료형이다. 1.숫자형 *정수 *실수(4.27e10

eatitstory.tistory.com

- HTTP에서 사용하는 메소드가 무엇이고 ? 어떤걸 의미하는지
- 파이썬 모듈이 무엇인지?
- 파이썬 모듈중에 requests모듈 설치해보기
- Reuqests모듈 사용을해서 네이버html내용을 print하기
 

* HTTP에서 사용하는 메소드가 무엇이고 ? 어떤걸 의미하는지

http는 요청(클라이언트)과 응답(서버)의 구조로 되어있다.
 
http 요청 프로토콜(규칙) 구조

사진출처:https://1.bp.blogspot.com/-GKCdB_2ASh0/X4qkvtlOE0I/AAAAAAAADxA/QrMC5X3GPgoKH5nT_HTbbVfyxJ9Yt5yCQCLcBGAsYHQ/s302/http_protocol_request.jpg


requsest line
>
headers
>
공백
>
body

사진출처:https://www.google.co.kr/url?sa=i&url=https%3A%2F%2Fwww.cloud4y.ru%2Fen%2Fblog%2Fwhat-are-http-requests%2F&psig=AOvVaw2DdsCQVy_EjoUdBEy-V4sR&ust=1710753364123000&source=images&cd=vfe&opi=89978449&ved=0CBMQjRxqFwoTCIjajoX7-oQDFQAAAAAdAAAAABAE



requsest line
요청 타입 (공백) url (공백) http버전
 
#request 경우
header
-요청에 관련된 데이터

body
-메소드에 따라 바디쓸지 말지 결정(get vs post)
-요청 할때 필요한 데이터들

#response 경우
header
-응답 코드(200ok 404error....etc)

body
-html텍스트/브라우저 데이터들
-응답할 내용 없으면 없을 수도 있다

 

*HTTP 요청 메소드(9가지)

**GET 메서드는 특정 리소스의 표시를 요청합니다. GET을 사용하는 요청은 오직 데이터를 받기만 합니다.
HEAD 메서드는 GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않습니다.
**POST 메서드는 특정 리소스에 엔티티를 제출할 때 쓰입니다. 이는 종종 서버의 상태의 변화나 부작용을 일으킵니다.
*PUT 메서드는 목적 리소스 모든 현재 표시를 요청 payload로 바꿉니다
*PATCH 메서드는 리소스의 부분만을 수정하는 데 쓰입니다..
*DELETE 메서드는 특정 리소스를 삭제합니다.
CONNECT 메서드는 목적 리소스로 식별되는 서버로의 터널을 맺습니다.
OPTIONS 메서드는 목적 리소스의 통신을 설정하는 데 쓰입니다.
TRACE 메서드는 목적 리소스의 경로를 따라 메시지 loop-back 테스트를 합니다.

제일 중요한 get,post

get은 요청url에 데이터(parameter)를 붙여서 전송->정보 요청
- 링크 클릭/입력 박스, 체크박스에 적은 데이터가 url뒤에 붙여서 보내짐(ex:네이버 검색어)
 - URL에 변수(데이터)를 포함시켜 요청한다.
 - 데이터를 Header(헤더)에 포함하여 전송한다. -주소창
 - URL에 데이터가 노출되어 보안에 취약하다. -노출되어도 상관 없는 경우 사용
 - 전송하는 길이에 제한이 있다.
 - 캐싱(한번 접근 후 또 요청할 시에 빠르게 접근하기위해 레지스터에 데이터를 저장시켜 놓는 것)할 수 있다.

post는 전송하면서 요청->정보 생성 요청
 - URL에 변수(데이터)를 노출하지않고 요청한다.
 - 데이터를 Body에 포함시켜 URL에 데이터가 노출되지 않아 기본 보안이 되어있다.
 - body에 데이터를 넣어서 보이지 않을 뿐 보안성이 좋은게 아니다  ->https 사용을 해야 보안이 된다.
 - 전송하는 길이에 제한이 없다.
 - 캐싱할 수 없다
 

*파이썬 모듈이 무엇인지?

파이썬 모듈이란?
모듈은 함수나 변수, 클래스를 모아놓은 파일이다. 프로그래밍을 할 때 굉장히 많은 모듈을 사용되는데 이미 만들어놓은 모듈이나 우리가 직접 만들 수 있는 모듈이 있다.


파이썬에서 특정 사이트의 정보를 읽어오기 위해서는 HTML 라이브러리가 필요하다. 그 중에서 requests 를 많이 사용하는데 requests 는 HTTP GET, POST, PUT, DELETE 등을 사용할 수 있다.
 

*파이썬 모듈중에 requests모듈 설치해보기

파이참 패키지에 requests 검색해서 설치
 

*Reuqests모듈 사용을해서 네이버html내용을 print하기

import requests
res = requests.get('http://naver.com')
print(res.text)

 
결과값


****피드백
개발자도구-네트워크-header/payload
파이썬request가 클라이언트 역활로 웹브라우저 역활(html가져오기)대신 할 수 있다.
웹브라우저-html을 화면에 보이게 해준다

+ Recent posts