2009-11-19 79 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