Monday, March 21, 2011

mechanize로 네이버 로그인하기

네이버 웹스크래핑을 하던 중, 네이버에 로그인할 일이 생겼습니다.
그런데 제대로 동작하지를 않더군요. 검색을 해보니, 동일한 문제를 겪고 있는 분이 있었습니다:
mechanize를 이용해서 네이버 로그인을 시도하

문제는 mechanize가 javascript를 지원하지 않기 때문에 발생한 겁니다.
즉, 로그인을 시도하면 다음과 같은 코드가 내려오는데:

<html>
<script language=javascript>
location.replace("http://www.naver.com");
</script>
</html>


해당 코드는 http://www.naver.com으로 이동시키는 명령입니다. 하지만 javascript를 지원하지 않는 mechanize는 이를 처리하지 못하기 때문에.. open() 을 사용해서 직접 열어줘야 합니다.

즉 아래와 같이 하면 됩니다(위 링크에서는 직접 데이터를 날렸는데, 저는 form field에 직접 값을 채운 뒤 submit하는 코드로 작성했습니다).:

browser = mechanize.Browser(factory=mechanize.RobustFactory())
browser.set_handle_robots(False)

browser.open('https://nid.naver.com/nidlogin.login?url=http://naver.com/이동할 페이지 주소')
browser.select_form(name="frmNIDLogin")
browser["id"] = '네이버 ID'
browser['pw'] = '패스워드'
browser.submit() # (A) 이제 로그인이 되었습니다.

browser.open(http://naver.com/이동할 페이지 주소') # (B)애초에 가고자 했던 페이지로 이동

이렇게 하더라도, 카페글을 읽으려면 여전히 험난한데요. 이에 대해서는 조금더 연구해보고 글을 올려보도록 하지요.

No comments:

Post a Comment