Python Mechanize Javascript отправить кнопку проблема! - PullRequest
3 голосов
/ 26 сентября 2010

Я делаю какой-то скрипт с модулем mechanize.browser.

одна проблема в том, что все остальное в порядке, но когда форма submit () не работает,

поэтому у меня была найдена какая-то подозрительная исходная часть.

в html-источнике я был найден, например, следующим.

я думаю, что loginCheck (это) создает проблему при отправке формы.

но как справиться с такого рода функцией javascript с помощью модуля механизации, поэтому я могу

успешно отправили форму и можете получить результат?

Ниже приведен фрагмент веб-ресурса, связанный с функцией JavaScript loginCheck (this).

        function init(){
        FRMLOGIN.ID.focus();
    }

    function loginCheck(f){
        if(chkNull(f.ID, "아이디를"))
            return false;

        if(chkNull(f.PWD, "패스워드를"))
            return false;

        //f.target = "ifrmLoginHidden";
        f.action = (f.SECCHK.checked) ? "https://user.buddybuddy.co.kr/Login/Login.asp" : "http://user.buddybuddy.co.kr/Login/Login.asp";
    }

я знаю, что механизация не поддерживает javascript, поэтому я хочу сделать логически логин loginCheck ()

функция с кодом Python Mechanize.

кто-нибудь может помочь мне сделать эту функцию javascript для механизации python

переведенный код?

так правильно можно залогиниться с сайта?

если так ценишь!

    # -*- coding: cp949-*-
import sys,os
import mechanize, urllib
import cookielib
from BeautifulSoup import BeautifulSoup,BeautifulStoneSoup,Tag
import datetime, time, socket
import re,sys,os,mechanize,urllib,time


br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)

# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)

# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

# Want debugging messages?
br.set_debug_http(True)
br.set_debug_redirects(True)
br.set_debug_responses(True)

# User-Agent (this is cheating, ok?)
br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6')]
br.open('http://user.buddybuddy.co.kr/Login/LoginForm.asp?URL=')
html = br.response().read()
print html

br.select_form(name='FRMLOGIN')
print br.viewing_html()
br.form['ID']='psh7943'
br.form['PWD']='qkrthgus'
br.submit()

print br.response().read()

если кто-нибудь может мне помочь .. очень ценю !!

1 Ответ

4 голосов
/ 06 октября 2010

Вы можете вручную пройти процедуру входа в браузер и проверить (например, Firebug в Firefox, Developer Tools в Chrome и т. Д.), Какие запросы отправляются на сайт, когда вы нажимаете кнопку OK. Обычно это POST-запрос с данными, взятыми из формы входа. Проверьте, какие данные отправляются в этом запросе, и выполните собственный почтовый запрос с помощью:

mechanize.urlopen(URL, POST_DATA). 

Вы можете извлечь POST_DATA (и post_url) из объекта формы Mechanize, используя:

form.click_request_data()

но вам может потребоваться внести некоторые изменения.

Очень простой пример:

br.select_form(name='form_name')
br.form['login']='login'
br.form['pass']='pass'
post_url, post_data, headers =  br.form.click_request_data()
mechanize.urlopen(post_url, post_data)
...