파이썬으로 일반 웹페이지의 HTML코드를 읽어오는 것은 쉽다.
http://www.boddie.org.uk/python/HTML.html 에 잘 나와있듯이
import urllib # Get a file-like object for the Python Web site's home page. f = urllib.urlopen("http://www.python.org") # Read from the object, storing the page's contents in 's'. s = f.read() f.close()
이렇게 urllib을 써서 쉽게 할 수 있다.
파이썬으로 쿠키를 써서 인증을 해야하는 사이트에 접속하고 싶을 때는 약간 다르다. 이 문제에 관해서는 Stackoverflow에 답이 있고
How to use Python to login to a webpage and retrieve cookies for later usage?
한글로 번역된 웹페이지도 있다.
이 사이트들이 소개하고 있는 답은 다음과 같은 코드인데,
import urllib, urllib2, cookielib
username = 'myuser'
password = 'mypassword'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'j_password' : password})
opener.open('http://www.example.com/login.php', login_data)
resp = opener.open('http://www.example.com/hiddenpage.php')
print resp.read()
이 코드를 레아시스를 예로 들어 살펴보자.
3,4번째 줄은 아이디와 비번을 입력하는 부분이고,
login_data = urllib.urlencode({'username' : username, 'j_password' : password})
이 부분을 제대로 수정하려면 해당 웹페이지의 로그인 화면의 Html코드를 살펴봐야한다. 다음은 레아시스의 로그인 창에 해당하는 코드다.노란색으로 표시된 부분을 참고, 다음과 같이 코드를 바꿔주자.
<input type="text" class="input_login" id="member_id" name="member_id" maxlength="20" required itemname="ID" value="ID"
onfocus="if (this.value=='ID') this.value='';" onblur="if (this.value=='') this.value='ID';"
style="padding-left:3px; ime-mode:disabled;" >
</div>
<div class="input_pw">
<input type="password" class="input_login" name="member_password" maxlength="20" itemname="PASSWORD"
style="width:128px;background:url(./design/login/basic_black/img/password.png) no-repeat;background-color:#ffffff;"
onfocus="this.style.backgroundImage=''" onblur="if (this.value=='') this.style.backgroundImage='url(./design/login/basic_black/img/password.png)';" >
login_data = urllib.urlencode({'member_id' : username, 'member_password' : password})
그 다음 opener부분을 바꾸기 위해서는 웹페이지의 히스토리를 참고하면 된다. 레아시스에 로그인할 때 logincheck.php의 주소를 이용,opener.open('http://www.example.com/login.php', login_data)
를opener.open('http://rheasis.com/framework/login/login_check.php', login_data)
로 바꿔준다.
그 다음엔 opener로 얻은 쿠키를 이용해서 인증이 필요한 곳에 접근할 수 있다.
예를 들어 이런 코드를 덧붙이면
f=opener.open('http://www.rheasis.com/rheasis/stock/?id=stock&code=20')print f.read()
http://www.rheasis.com/rheasis/stock/?id=stock&code=20 의 html을 출력한다.
이제 레아시스 웹페이지를 html로 볼 수 있게 되었다(--?)
No comments:
Post a Comment