2009-11-19 77 views
2

我使用mechanize python製作自動登錄腳本。機械化無法登錄python

在我使用機械化之前沒有問題,但在此網站www.gmarket.co.kr我無法做到。

每當我嘗試總是登錄登錄頁面中即使有正確的Gmarket的ID返回,傳球,我無法登錄,我看到了一些可疑的郵件

"<script language=javascript>top.location.reload();</script>" 

我想,這與有關我的問題,但不要不知道如何處理。 這裏是樣品ID,並通過對登錄測試

ID:tgi177傳:tk1047

如果有人能幫助我非常感激在此先感謝

CODE:

# -*- coding: cp949 -*- 
from lxml.html import parse, fromstring 
import sys,os 
import mechanize, urllib 
import cookielib 
import re 
from BeautifulSoup import BeautifulSoup,BeautifulStoneSoup,Tag 

try: 

    params = urllib.urlencode({'command':'login', 
           'url':'http%3A%2F%2Fwww.gmarket.co.kr%2F', 
           'member_type':'mem', 
           'member_yn':'Y', 
           'login_id':'tgi177', 
           'image1.x':'31', 
           'image1.y':'26', 
           'passwd':'tk1047', 
           'buyer_nm':'', 
           'buyer_tel_no1':'', 
           'buyer_tel_no2':'', 
           'buyer_tel_no3':'' 

           }) 
    rq = mechanize.Request("http://www.gmarket.co.kr/challenge/login.asp") 
    rs = mechanize.urlopen(rq) 
    data = rs.read()  


    logged_in = r'input_login_check_value' in data          
    if logged_in: 
     print ' login success !' 
     rq = mechanize.Request("http://www.gmarket.co.kr") 
     rs = mechanize.urlopen(rq) 
     data = rs.read() 
     print data 

    else: 
     print 'login failed!' 
     pass 
     quit()  
except: 
    pass 
+2

如果您發佈了一個不起作用的代碼的最小示例,以便其他人可以以此爲基礎開始,它將有所幫助。 – 2009-11-19 01:04:02

+0

你好,感謝您的回覆! 我在這裏上傳我的腳本 http://paste.pocoo.org/show/151607/ 如果有任何幫助非常感謝 – paul 2009-11-19 03:45:48

+2

一個非常有經驗的SO用戶在兩週前問你避免使用外部[pastebin]服務。請將相關部分的代碼粘貼到您的帖子中。這樣,事情就停留在一個地方,只要SO存在,人們就會更少地受到影響=>答案的可能性更高,那麼您的代碼就可以保證可用。 – paprika 2009-11-19 07:44:50

回答

1

mechanize沒有按」沒有能力與JavaScript交互。可能spidermonkey模塊會幫助你(我沒有經驗,但描述是相當有前途的)。您也可以手動處理此類重新加載(例如,針對此特定情況的Browser.reload()),如果它是您遇到此問題的唯一網站。

更新: 快速查看您的網頁顯示您已提交給其他網址(使用https:scheme)。通過checkValid()查看JavaScript功能。發佈給它會帶來其他結果。請注意,這看起來像你做功課之前你應該自己做。

+0

感謝您的回覆...但問題是我不知道如何處理JavaScript或其他.. – paul 2009-11-19 07:14:24

+0

我認爲最好的方法是創建'瀏覽器'對象並使用它的'reload() '方法。 – 2009-11-19 07:27:57