6
votes

Python Mécaniser.Browser Soumettre () Problème connexe

im faire un script avec module Mechanize.Browser.

Un problème est que tout autre chose est ok, mais lors de la soumission (), il ne fonctionne pas, P>

J'ai donc été trouvé de suspicion Partie source. P>

dans la source HTML, j'ai été trouvée à la suite de la suivante. P>

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


0 commentaires

3 Réponses :


1
votes

Onsubmit est juste ignoré par la mécanisie, aucune interprétation JavaScript n'est faite.
Vous devez vérifier quel loginCheck (); Dans certains cas limités (validation), vous pouvez faire de manière programmable ce que JavaScript est effectué.


6 commentaires

Bonjour merci ... Si vous connaissez un exemple, vous voudriez-vous que certains me disent? Si c'est le cas, c'est une bonne référence pour moi! Merci


En regardant LoginCheck, qu'est-ce que ça fait?


Action " user.buddybuddy.co.kr/login/login.asp " est donné par JavaScript.Je suis désolé mais vous ne pouvez pas utiliser mécaniser dans ce cas.


Quel type de module manipule le mieux dans ce cas? Peut-être que Urllib est le meilleur choix pour moi?


Puis-je utiliser la fonction Mécaniser Cliquez? tel comme br.click


Non, vous ne pouvez pas utiliser URLLIB et essayer d'embrocher le bon message sur user.buddybuddy .CO.KR / LOGIN / LOGIN.ASP URL :)



1
votes

Vous devez soit utiliser un module homondié Domform et SpiderMonkey ( http://pypi.python.org/pypi/python-spidermonkey ) Pour traiter JavaScript. Ou vous déterminez ce que LoginCheck () fait et exécuter sa soumission de formulaire préalable de travail à Python. Si LoginCheck () vérifie simplement la validité évidente des données de connexion, cela devrait être assez facile. Veuillez noter que le paramètre d'action de la balise de formulaire indiqué est manquant. Il est probablement donné dans la partie javascript.

Selon ce que vous avez l'intention, il pourrait être plus facile de travailler avec Urllib2 uniquement. Vous pouvez assumer une apparence statique de cette page Web et publier simplement des données avec les méthodes d'Urllib2 et obtenir les résultats avec cela également.


0 commentaires

2
votes

Mécaniser ne supporte pas du tout JavaScript. Si vous devez absolument exécuter ce JavaScript, regardez Selenium. Il offre des liaisons python pour contrôler un navigateur réel et courant comme Firefox ou IE.


0 commentaires