본문 바로가기

IT/Python

파이썬 웹프로그래밍 - 웹 모듈 urlparse 예제

/* 
written by kaspy (kaspyx@gmail.com)
*/ 


* urlparse 모듈은 주로 웹클라이언트 단에서 사용되는 parser 모듈이다.


1. urlparse 모듈

이 모듈은 URL의 분해, 조립, 변경 등을 처리하는 함수를 제공하며, parse한 결과를 리턴한다.



from urlparse import urlparse

result = urlparse("http://www.python.org:80:80/guido/python.html;philosophy?overall=3#n10")

result

ParseResult(scheme='http',netloc='www.python.org:80:80',path='/guido/python.html', params='philosophy', query='overall=3', fragment='n10')

 


* 속성값의 의미

속성

의미

scheme

URL에 사용된 프로토콜을 의미

netloc

네트워크의 위치, user:password@host:port 형식으로 표현되며, HTTP 프로토콜일 경우 host:port 형식으로 지정된다.

path

파일이나 애플리케이션 경로를 의미

params

애플리케이션에 전달될 매개변수

query

질의 문자열로 앰퍼샌드(&)로 구분된 = 쌍 형식으로 표현

fragment

문서내의 앵커 등 조각을 지정


2. urllib2 모듈


1) urlopen 함수

urllib2 모듈은 주어진 URL에서 데이터를 가져오는 기본 기능을 제공하며 urlopen() 함수의 형식은 아래와 같다.

* 참고로 이함수는 2.x버전 urllib.urlopen() 함수는 3.x버전에서는 제거되었고 urllib2.urlopen() 함수를 사용해야한다.


urlopen(url, data=None, [timeout])

 

* url에 file을 지정하면 로컬 파일을 열수도 있음

* 요청방식을 POST로 보내고 싶다면 data 인자에 질의 문자열을 지정해주면 된다.

* timeout은 응답을 기다리는 타임아웃 시간을 초로 표시


- 사용 예제 1

네이버 웹서버에 페이지를 읽어서 500 바이트 만큼 출력

from urllib2 import urlopen

f = urlopen("http://www.naver.com")

print f.read(500)

...

<!doctype html>

<html lang="ko">

<head>

 

- 사용 예제 2

POST 방식으로 요청(네이버에서는 post 방식에대한 처리가 없기때문에 그냥 그대로보임)

from urllib2 import urlopen

data = "query=python"

f = urlopen("http://www.naver.com")

print f.read(500)

<!doctype html>

<html lang="ko">

<head>

 

- 사용 예제 3

POST 방식 요청을 아래와같은 방식으로도 할수 있다.

 

import urllib2

req = urllib2.Request(“http://www.naver.com”)

req.add_header(“Content-Type”,”text/plain”)

req.add_data(“query=python”)  #POST method

f = urllib2.urlopen(req)

print f.read(300)

 

 

* 참고 내부링크

파이썬 웹표준 라이브러리 소개 및 변경사항