본문 바로가기

카테고리 없음

[파이썬] 웹 크롤링: Get Request와 쿼리 스트링

requests 라이브러리를 이용해서 Get request를 보내는 간단한 방법과 쿼리 스트링에 대해 알아보겠습니다.

 

Get Request 예시

아래 코드는 웹 브라우저에서 G마켓 Best 페이지에 접속한 것과 같은 내용입니다. 다음과 같은 순서로 이루어집니다.

1) http://corners.gmarket.co.kr/Bestsellers 주소로 Get 요청(request)을 보냅니다.
2) 서버에서는 해당 요청을 처리 후 클라인트에게 응답(response)을 줍니다.
3) 응답 내용인 html를 확인합니다.

 

import requests
 
url = "http://corners.gmarket.co.kr/Bestsellers"
r = requests.get(url)
print(r.status_code)
print(r.text)

 

 

URL에 파라미터(Parameters) 추가하기

웹사이트를 돌아다니다 보면 다음과 같은 URL 주소 형식을 자주 볼 수 있습니다.

https://주소/주소?key2=value2&key1=value1 

위와 같은 주소 방식은 쿼리 스트링(Query String)을 이용한 데이터 전달 방식으로 클라이언트가 입력한 데이터를 서버로 전달하는 방법 중 하나입니다. 물음표 뒤에 나타나는 데이터를 쿼리 스트링이라 부르며 "?key=value"의 형식을 취합니다. 클라이언트가 입력하는 데이터가 바뀌면 쿼리 스트링도 바뀌게 되며 그 결과 서버로부터 받는 응답도 달라지게 됩니다.

 

 

예를 들어 지마켓에서 "참치"라는 키워드를 입력하고 엔터를 치면 브라우저 주소창에 ?keyword=참치라는 쿼리 스트링이 표시됩니다. 만약 검색 키워드를 바꾼다면 주소창의 쿼리 스트링도 변경됩니다. 쿼리 스트링을 이용한 코드는 다음과 같습니다. 파라미터가 두 개 이상이라면 params={'key1'key1': 'value1', 'key2': 'value2'}와 같이 쓰면 됩니다.

 

import requests
url = f"http://browse.gmarket.co.kr/search"
payload = {'keyword': '참치'}
r = requests.get(url, params=payload)
print(r.status_code)
print(r.text)

 

응답 내용 확인하기

서버의 응답 내용을 확인할 수 있습니다. 주로 확인하게 되는 내용은 다음과 같습니다.
1) 상태코드
2) 인코딩
3) 헤더
4) HTML Code

 

print('status code: ', r.status_code, "// 200은 정상, 그 외의 경우 확인 필요")
# >>> status code:  200  /// 200은 정상, 그 외의 경우 확인 필요
print('encoding: ' ,r.encoding)
# >>> encoding:  utf-8
print('headers: ', r.headers)
# >>> headers:  {'X-Request-Id': '72ba1b9135c5414ea9f33f2d507fd3c3', ...
print('html code: ', r.text)
# >>> html code:  <!DOCTYPE html><html lang="ko" class="" data-reactroot=""><head> ...

 

 

-이 글은 아나콘다(Anaconda3)가 설치된 환경을 기준으로 작성되었습니다.