블로그 이미지
흰색앵초

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2011. 7. 3. 21:18 카테고리 없음
네이버 웹스크래핑을 하던 중, 네이버에 로그인할 일이 생겼습니다.
그런데 제대로 동작하지를 않더군요. 검색을 해보니, 동일한 문제를 겪고 있는 분이 있었습니다:
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)애초에 가고자 했던 페이지로 이동

========================
출처 : http://dopanysoft.blogspot.com/2011/03/mechanize.html
posted by 흰색앵초