2010-03-30 58 views
6

即時通過mechanize.browser模塊製作一些腳本。python mechanize.browser提交()相關的問題

的問題之一是所有其他的東西是好的,但提交()的形式時,它不工作,

所以我找到了一些嫌疑源部分。

在html源代碼中,我發現如下所示。

<form method="post" onsubmit="return loginCheck(this)" name="FRMLOGIN"/> 

即時思考,loginCheck(這個)在提交表單時出現問題。

但如何處理這種與機械化模塊JavaScript函數,這樣我就可以

成功提交表單,可以接收的結果?

folloing是我當前的腳本源。

如果任何人都可以幫助我..很多欣賞!

# -*- 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']='zero1zero2' 
br.form['PWD']='012045' 
br.submit() 

print br.response().read() 

回答

1

您將需要使用未維護的模塊DOMForm和Spidermonkey(http://pypi.python.org/pypi/python-spidermonkey)來處理JavaScript。或者你想知道loginCheck()在做什麼,並在python中提交表單之前執行它的工作。如果loginCheck()只是檢查登錄數據的顯着有效性,那應該很容易。 請注意,所述表單標籤的操作參數缺失。它可能在javascript部分給出。

根據您的意圖,僅使用urllib2可能會更容易。您可能會假定該網頁的靜態外觀,只需使用urllib2的方法發佈數據,並使用它獲取結果。

+0

謝謝,我會盡力:) – paul 2010-03-30 13:30:25

1

的onsubmit只是由機械化忽略,沒有JavaScript的解釋就完成了。
你需要驗證什麼loginCheck();在一些有限的情況下(驗證),你可以通過編程的方式做JavaScript。

+0

你好,謝謝...如果你知道一些例子你會告訴我嗎?如果是的話,對我來說很好的參考!謝謝 – paul 2010-03-30 10:51:02

+0

看着loginCheck,它有什麼作用? – systempuntoout 2010-03-30 11:00:33

+0

動作「https://user.buddybuddy.co.kr/Login/Login.asp」由javascript給出。我很抱歉,在這種情況下您不能使用機械化。 – systempuntoout 2010-03-30 13:27:07

2

mechanize根本不支持Javascript。如果您絕對必須運行該Javascript,請查看Selenium。它提供了python綁定來控制一個真正的,運行的瀏覽器,如Firefox或IE。