2010-03-30 11 views
6

मैकेनाइजेशन.ब्रोसर मॉड्यूल के साथ कुछ स्क्रिप्ट बना रहा हूं।पायथन mechanize.browser सबमिट() संबंधित समस्या

समस्या में से एक सब दूसरी बात यह ठीक है, लेकिन जब() सबमिट करने पर काम नहीं कर रहा,

तो मैं कुछ संदेह स्रोत हिस्सा मिला था।

एचटीएमएल स्रोत में मुझे निम्न जैसे पाया गया था।

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

im सोच, loginCheck (यह) समस्या है जब प्रपत्र सबमिट बना रही है।

लेकिन कैसे मशीनीकरण मॉड्यूल के साथ जावास्क्रिप्ट समारोह के इस प्रकार संभाल करने के लिए, तो मैं

सफलतापूर्वक प्रपत्र प्रस्तुत कर सकते हैं और परिणाम प्राप्त कर सकते हैं?

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 और स्पाइडरमॉन्की (http://pypi.python.org/pypi/python-spidermonkey) का उपयोग करने की आवश्यकता होगी। या आप पता लगाते हैं कि लॉगिन चेक() क्या कर रहा है और पाइथन में अपना फॉर्म पूर्व फॉर्म सबमिशन कर रहा है। अगर loginCheck() लॉगिन डेटा की स्पष्ट वैधता के लिए बस जांचता है, तो यह बहुत आसान होना चाहिए। कृपया ध्यान दें, कि निर्दिष्ट फ़ॉर्म टैग का क्रिया पैरामीटर गुम है। यह शायद जावास्क्रिप्ट भाग में दिया गया है।

आप जो चाहते हैं उसके आधार पर केवल urllib2 के साथ काम करना आसान हो सकता है। आप उस वेब पेज की स्थिर उपस्थिति मान सकते हैं और केवल urllib2 के तरीकों के साथ डेटा पोस्ट कर सकते हैं और इसके साथ परिणाम भी प्राप्त कर सकते हैं।

+0

धन्यवाद मैं कोशिश करूंगा :) – paul

1

ऑनसबमिट सिर्फ मशीनीकरण द्वारा नजरअंदाज कर दिया है, कोई जावास्क्रिप्ट व्याख्या किया जाता है।
आपको यह सत्यापित करने की आवश्यकता है कि लॉगिन चेक(); कुछ सीमित मामले (सत्यापन) में आप प्रोग्रामेटिक रूप से जावास्क्रिप्ट क्या कर सकते हैं।

+0

हैलो धन्यवाद ... अगर आपको कुछ उदाहरण पता है तो क्या आप मुझे बताएंगे? यदि ऐसा है तो यह मेरे लिए अच्छा संदर्भ है! धन्यवाद – paul

+0

लॉगिन देख रहे हैं चेक, यह क्या करता है? – systempuntoout

+0

कार्रवाई "https://user.buddybuddy.co.kr/Login/Login.asp" जावास्क्रिप्ट द्वारा दी गई है। मुझे खेद है लेकिन आप इस मामले में मशीनीकरण का उपयोग नहीं कर सकते हैं। – systempuntoout

2

मशीनीकरण जावास्क्रिप्ट का समर्थन नहीं करता है। यदि आपको बिल्कुल उस जावास्क्रिप्ट को चलाने की ज़रूरत है, तो सेलेनियम देखें। यह फ़ायरफ़ॉक्स या आईई जैसे वास्तविक, चल रहे ब्राउज़र को नियंत्रित करने के लिए पाइथन बाइंडिंग प्रदान करता है।

संबंधित मुद्दे