웹 요청 모듈
request 모듈 설치
$ pip install requests
원하는 이름의 .py 파일을 만든후 다음 내용을 적고, python 명령어로 실행해서 오류가 나지 않으면 설치 성공입니다.
import requests
웹 페이지 접속하기
requests를 이용하여 요청을 보내 서버가 응답한 값을 반환하게 합니다.
예시 코드
import import requests as rq # requests를 전부 타이핑하기 않고 rq라는 이름으로 대신 사용할 수 있게 합니다.
url = "https://www.airkorea.or.kr"
res = rq.get(url)
print(res)
print(res.status_code)
실행 결과는 아래와 같습니다.
requests는 GET과 POST로 요청을 보낼 수 있습니다. GET 요청을 보낼 때는 앞의 코드처럼 rq.get()을 이용하고, POST 요청을 보낼 때는 rq.post() 처럼 사용합니다.
위의 status_code는 서버의 응답 코드이며, 이 코드에 따라 조건을 나누어 처리할 수도 있습니다.
예시 코드
import requests as rq
def url_check(url):
res = rq.get(url)
print(res)
sc = res.status_code
if sc == 200:
print("%s 요청 성공" %(url))
elif sc == 404:
print("%s 찾을 수 없음" %(url))
else:
print("%s 알 수 없는 에러: %s" %(url, sc))
url_check("https://www.airkorea.or.kr")
url_check("https://www.airkorea.or.kr/xxx")
실행 결과는 아래와 같습니다.
HTML 코드 보기
예시 코드1
import requests as rq
url = "https://pjt359loo.github.io"
res = rq.get(url)
print(res.text)
실행 결과는 아래와 같습니다.
예시 코드2
import requests as rq
url = "https://help.github.com/en"
res = rq.get(url)
print(res.content)
실행 결과는 아래와 같습니다.
#content 속성으로 html을 가져오면 한글을 바이너리 형태(인코딩)로 바꾸어 가져옵니다. 한글이 깨지는 현상을 방지할 수 있습니다. 인코딩 문제를 해결합니다.
requests 요청에 데이터 실어 보내기
GET요청 보내기
예시 코드
import requests as rq
url = "https://pjt359loo.github.io/"
res = rq.get(url, params={"key1":"value1", "key2":"value2"})
print(res.url)
실행 결과는 아래와 같습니다.
POST 요청 보내기
예시 코드
import requests as rq
url = "https://pjt359loo.github.io/"
res = rq.post(url, data={"key1":"value1", "key2":"value2"})
print(res.url)
실행 결과는 아래와 같습니다.
예외처리
requests를 이용하여 요청을 보낼 때 에러가 발생할 수 있습니다. 예외처리를 통해 에러에 대비할 수 있습니다.
예시 코드
import requests as rq
url = "blog.naver.com/pjt359loo"
try:
res = rq.get(url)
except rq.exceptions.MissingSchema:
print('MissingSchema 에러 발생 ')
실행 결과는 아래와 같습니다.
파싱 모듈
요청 모듈로 가져온 HTML 코드를 파이썬이 쓸 수 있는 코드로 변환해 줍니다.
bs4 사용
설치
pip install bs4
예시 코드
import bs4 from bs4 import BeautifulSoup
html = """"""
soup = BeautifulSoup(html, 'lxml')
#다음과 같이 bs4 모듈의 BeautifulSoup 함수를 사용합니다.
#첫 번째 인자는 html을 가져올 주소, 두 번째 인자에는 원하는 파서를 입력합니다.
파서란 원시 코드인 순수 문자열 객체를 해석할 수 있도록 분석하는 것을 의미합니다. 파이썬에서 사용되는 파서는 다음과 같습니다.
-lxml: XMl 해석이 가능한 파서입니다. 파이썬 2.x와 3.x 모두 지원합니다. C로 구현되어있어 빠릅니다.
-html5lib: 웹 브라우저의 방식으로 HTML을 해석합니다. 파이썬으로 구현되어 있어 lxml 보다 느립니다. 2.x 버전 전용입니다. 처리 속도가 느리다는 단점이 있습니다.
각 파서는 pip을 이용하여 설치할 수 있습니다.
lxml을 통해 파싱하기
예시 코드
from bs4 import BeautifulSoup
html = """
test
"""
soup = BeautifulSoup(html,"lxml") #Python HTML parser
print(soup)
실행 결과는 아래와 같습니다.
'파이썬' 카테고리의 다른 글
[Python] 파이썬의 특징 (0) | 2022.03.15 |
---|---|
[Python] Matplotlib 소개 및 예시 (0) | 2020.06.02 |
파이썬(python) 파일(file) 다루기 (0) | 2019.04.04 |
python의 super() 함수 란? (0) | 2019.04.04 |
파이썬(python) 로깅(logging) 모듈이란? (0) | 2019.04.02 |
댓글