механизация не может войти в python

Я делаю сценарий автоматического входа в систему, используя механизированный питон.

Раньше механизировал без проблем, но www.gmarket.co.kr на этом сайте не смог.

всякий раз, когда я пытаюсь войти в систему, всегда возвращается страница входа даже с правильным идентификатором gmarket, проходит, я не могу войти, и я видел какое-то подозрительное сообщение

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

Я думаю, что это связано с моей проблемой, но я точно не знаю, как справиться с . Вот образец идентификатора и пройти тест входа в систему

идентификатор: tgi177 пароль: tk1047

если кто-нибудь может мне помочь, спасибо заранее

КОД:

# -*- 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

person paul    schedule 19.11.2009    source источник
comment
Было бы полезно, если бы вы разместили минимальный пример кода, который не работает, чтобы другие могли начать с него в качестве основы.   -  person Benji York    schedule 19.11.2009
comment
привет спасибо за ваш ответ! я загрузил свой скрипт здесь paste.pocoo.org/show/151607, если это поможет высоко ценю   -  person paul    schedule 19.11.2009
comment
Всего две недели назад очень опытный пользователь SO попросил вас избегать использования внешних сервисов [pastebin]. Вставьте соответствующую часть кода прямо в сообщение. Таким образом, все остается в одном месте, ваш код гарантированно будет по-прежнему доступен, пока существует SO, и люди меньше беспокоятся => более высокая вероятность ответов.   -  person paprika    schedule 19.11.2009
comment
Несколько вещей: 1) ваш пример кода импортирует сторонние модули, которые ему не нужны, поэтому вы, вероятно, получите меньше ответов, чем в противном случае. 2) Вы ничего не делаете с параметрами после его создания... 3) Я попробовал пользователя/пароль на сайте в Firefox и не смог войти (насколько я могу судить, я не читаю по-корейски) .   -  person Benji York    schedule 19.11.2009
comment
спасибо паприка...ты прав. привет Бенджи Йорк, я только что проверил с gmarket.co.kr/challenge/login.asp эта страница.. и нет проблем с входом в систему с id: tgi177 pass: tk1047, а также уверен, что я был тестовым входом в систему с firefox 3.0, спасибо заранее..   -  person paul    schedule 19.11.2009


Ответы (1)


mechanize не может взаимодействовать с JavaScript. Возможно вам поможет модуль spidermonkey (у меня нет опыта работы с ним, но описание многообещающее) . Также вы можете обрабатывать такую ​​перезагрузку (например, Browser.reload() для этого конкретного случая) вручную, если это единственный сайт, на котором у вас есть эта проблема.

Обновление. Быстрый просмотр вашей страницы показывает, что вы отправили ее на другой URL (со схемой https:). Просмотрите checkValid() функцию JavaScript. Отправка на него дает другой результат. Обратите внимание, что это похоже на домашнее задание, которое вы должны сделать сами, прежде чем спрашивать.

person Denis Otkidach    schedule 19.11.2009
comment
спасибо за ваш ответ ... но проблема в том, что я понятия не имею, как обращаться с javascript или другим .. - person paul; 19.11.2009
comment
Я думаю, что лучший способ - создать объект Browser и использовать его метод reload(). - person Denis Otkidach; 19.11.2009