urllib
urllib 라이브러리를 이용해 web 데이터를 python에서 손쉽게 활용 가능.
urllib 내에 총 4개의 모듈이 존재.
- request
- parse
request
웹을 열어서 데이터 읽어오는 역할. 웹에서 얻은 데이터 객체 정보 전달
test source code
#!/apps/python/bin/python
import urllib.request
req = urllib.request
res = req.urlopen("http://oboki.net")
print (res)
## 서버 정보 반환
svr = res.getheaders()
for i in svr:
print(i)
## 상태 코드 반환
print (res.status)
## HTML 소스 반환
print (res.read())
result
$ ./request.py
<http.client.HTTPResponse object at 0x7f89060a3128>
('Date', 'Thu, 09 Aug 2018 10:28:44 GMT')
('Server', 'Apache/2.4.27 (Unix) OpenSSL/1.0.2m PHP/7.1.8')
('X-Powered-By', 'PHP/7.1.8')
('Link', '<http://www.oboki.net/index.php?rest_route=/>; rel="https://api.w.org/"')
('Link', '<http://www.oboki.net/>; rel=shortlink')
('Connection', 'close')
('Transfer-Encoding', 'chunked')
('Content-Type', 'text/html; charset=UTF-8')
200
b'\n\n<!DOCTYPE html>\n<html lang="ko-KR">\n<head>\n\t<meta charset="UTF-8">\n\t<meta name="viewport" content="width=device-width, initial-scale=1">\n\t<link rel="profile" href="http://gmpg.org/xfn/11">\n\t<link rel="pingback" href="http://www.oboki.net/xmlrpc.php">\n\n\t<title>oboki – www.oboki.net</title>\n<link rel=\'dns-prefetch\' href=\'//fonts.googleapis.com\' />\n<link rel=\'dns-prefetch\' href=\'//s.w.org\' />\n<link rel="alternate" type="application/rss+xml" title="oboki » \xed\x94\xbc\xeb\x93\x9c" href="http://www.oboki.net/?feed=rss2" />\n<link rel="alternate" type="application/rss+xml" title="oboki » \xeb\x8c\x93\xea\xb8\x80 \xed\x94\xbc\xeb\x93\x9c" href="http://www.oboki.net/?feed=comments-rss2" />\n\t\t<script type="text/javascript">\n\t\t\twindow._wpemojiSettings = {"baseUrl":"https:\\/\\/s.w.org\\/images\\/core\\/emoji\\/11\\/72x72\\/","ext":".png","svgUrl":"https:\\/\\/s.w.org\\/images\\/core\\/emoji\\/11\\/svg\\/","svgExt":".svg","source":{"concatemoji":"http:\\/\\/www.oboki.net\\/wp-includes\\/js\\/wp-emoji-release.min.js?ver=4.9.8"}};\n\t\t\t!function(a,b,c){function d(a,b){v......
- getheaders()
- 서버에 대한 정보를 list 로 반환
- status
- read()
- 웹 페이지의 HTML 코드 반환
parse
인코딩을 가능하게 해줌 -> 한글 검색어 사용 가능
test source code
#!/apps/python/bin/python
import urllib.parse
def append_arg():
arg = str(input("Enter: "))
return "&arg=" + arg
print (append_arg())
def append_arg2():
arg = urllib.parse.quote_plus(str(input("Enter: ")))
return "&arg=" + arg
print (append_arg2())
def append_arg3():
arg = urllib.parse.quote_plus(str(input("Enter: ")))
return "&arg=" + arg
print (append_arg3())
result
$ ./parse.py
Enter: 한글 입력
&arg=한글 입력
Enter: 한글 입력
&arg=%ED%95%9C%EA%B8%80+%EC%9E%85%EB%A0%A5
Enter: 한글 입력
&arg=%ED%95%9C%EA%B8%80+%EC%9E%85%EB%A0%A5
input_query 에서는 한글 입력을 그대로 출력해주었는데,
input_query2 에서는 한글 입력을 웹이 인식할 수 있도록 변환해줌
quote 는 공백을 “%20” 문자열로 처리하고 quote_plus는 공백을 ‘+’ 기호로 처리함