Programming/Python 웹 스크래퍼 만들기

Python Requests

2022. 11. 14. 21:00

4.7 Requests

​

Python Standard Library 사용해본다.

Pyhon Standard Library 에 없는 것은 pypi 에서 찾을 수 있다.

pypi - 다른 사람이 만든 project 나 module 을 모아둔 곳.

https://pypi.org/

 

PyPI · The Python Package Index

The Python Package Index (PyPI) is a repository of software for the Python programming language.

pypi.org

 

requests 를 검색해서 사용할 예정이다.

reqeusts는 user의 python 코드에서 웹사이트로 request 보내는걸 할수 있게 해준다.

​

request 란 무엇인가?

예를 들어 내가 구글로 이동하는게 request 이다.

내 브라우저는 구글 서버에 reqeust 를 보내고 구글 서버는 나한테 웹사이트를 보내준다.

​

requests 는 이걸 가능하게 해준다.

​

​

cmd 창을 열고 python -m pip install requests 를 입력하여 requests 설치

​

from requests import get

requests 에서 get 을 가져온다

get 은 이동한 다음에 website 를 가져오는 function 이다.

​

​

4.8 status code

​

get function을 사용하여 URL을 가져와본다.

get function은 response 를 return 해준다.

response 는 웹사이트의 응답이다.

​

function 이 무언가를 return 해주기 때문에 user 는 그 값을 가져온다.

user 는 그걸 변수(variable)로 받아야 한다.

그러므로 response 라는 변수를 만들어서 받는다.

response 는 그저 변수일뿐 다른이름으로 만들어도 된다.

from requests import get

websites = (
    'google.com',
    'https://airbnb.com',
    'facebook.com',
    'https://naver.com'
)

for website in websites:
    if not website.startswith('https://'):
        website = f"https://{website}"
    response = get(website)
    print(response)

출력값:

<Response [200]>

<Response [200]>

<Response [200]>

<Response [200]>

​

200 은 웹사이트가 성공적으로 응답했다는 뜻이다.

​

  • 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행합니다.
  • 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용하였습니다.
  • 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요합니다.
  • 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
  • 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다.

​

​

인터넷은 HTTP protocol 에 기반하고 있다.

컴퓨터들이 서로 소통하는 방식은 HTTP request 이다.

그래서 request가 정상인지 아닌지 판별해야하는데

그때 사용하는게 HTTP 상태코드 이다.

메서드중 status_code(상태코드) 를 출력해주는 메서드를 사용한다.

from requests import get

websites = (
    'google.com',
    'https://airbnb.com',
    'facebook.com',
    'https://naver.com'
)

for website in websites:
    if not website.startswith('https://'):
        website = f"https://{website}"
    response = get(website)
    print(response.status_code)

 

출력값:

200

200

200

200

​

이번에는 상태코드(status_code) 가 정상이면 ok 아니면 not ok 라는 구문을 출력해본다.

from requests import get

websites = (
    'google.com',
    'https://airbnb.com',
    'facebook.com',
    'https://naver.com'
)

for website in websites:
    if not website.startswith('https://'):
        website = f"https://{website}"
    response = get(website)
    
    if response.status_code == 200:
        print(f"{website} is OK")
    else:
        print(f"{website} not OK")

출력값:

https://google.com is OK

https://airbnb.com is OK

https://facebook.com is OK

https://naver.com is OK

​

OK 또는 Fail 같은 응답을 하는 dictionary를 만들어본다.

results 라는 dictionary를 만든다.

get(website)를 통해서 response 를 받게되면

results dictionary 안에 새로운 entry를 추가한다.

results dictionary에 상태코드가 정상인( 응답이 잘 되는 웹사이트 ) 를 추가한다.

result[website]를 사용해서.

​

from requests import get

websites = (
    'google.com',
    'https://airbnb.com',
    'facebook.com',
    'https://naver.com'
)

results ={}

for website in websites:
    if not website.startswith('https://'):
        website = f"https://{website}"
    
    response = get(website)
    
    if response.status_code == 200:
        results[website] = "OK"
    else:
        results[website] = "FAILED"

print(results)

출력값:

{'https://google.com': 'OK', 'https://airbnb.com': 'OK', 'https://facebook.com': 'OK', 'https://naver.com': 'OK'}

 

 

HTTP 상태 코드 정리 출처

https://www.whatap.io/ko/blog/40/

'Programming > Python 웹 스크래퍼 만들기' 카테고리의 다른 글

Python WebScrapper Introduction  (1) 2022.11.16
Python Requests, Get 복습  (2) 2022.11.15
Python For Loops  (0) 2022.11.11
Python List, Tuple, Dict 복습  (0) 2022.11.10
Python Tuple, Dictionary  (0) 2022.11.09
'Programming/Python 웹 스크래퍼 만들기' 카테고리의 다른 글
  • Python WebScrapper Introduction
  • Python Requests, Get 복습
  • Python For Loops
  • Python List, Tuple, Dict 복습
Security Engineer
Security Engineer
IT 공부
Security Engineer
IT-log
Security Engineer
전체
오늘
어제
  • 분류 전체보기 (178)
    • Programming (39)
      • Python 웹 스크래퍼 만들기 (39)
    • IT 지식 (70)
      • IT 정보 (28)
      • CS 기초 (24)
      • 운영체제 (8)
      • IT 인프라 기초 (10)
    • 보안 (46)
      • 악성코드 분석 (10)
      • Bandit 워게임 (25)
      • 취미로 해킹 2 (6)
      • 환경 구축 (4)
      • PoC 분석 (1)
    • 웹 해킹 (23)
      • 웹 기초 지식 (8)
      • SQL 기본 (2)
      • 웹 해킹 및 시큐어 코딩 기초 (13)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Web
  • 악성코드 분석
  • 웹 개발
  • 운영체제
  • 모의해킹
  • it 운영
  • bandit
  • WarGame
  • 취미로해킹
  • HTML
  • 파이썬
  • 웹 해킹
  • flask
  • webScrapper
  • 시큐어 코딩
  • 악성코드
  • 취미로 해킹
  • 리눅스
  • Def
  • 해킹
  • CSS
  • CS
  • overthewire
  • 컴퓨터
  • Selenium
  • 워게임
  • IT 인프라
  • Beautifulsoup
  • CS 기초
  • Python

최근 댓글

최근 글

hELLO · Designed By 정상우.
Security Engineer
Python Requests
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.