2010-09-23 5 views
3

Tout d'abord, désolé si cette question est un peu vague et décousue! Je suis d'accord avec Python, mais je n'ai jamais rien fait avec HTTP avant.Comment soumettre des formulaires Web en utilisant Python?

J'essaie d'automatiser la soumission d'un formulaire Web, et de la lecture de certains de this page je comprends que je dois faire une demande POST. J'ai également trouvé un extrait de code démontrant le module urllib:


import urllib 
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0}) 
f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params) 
print f.read() 

Mais je ne comprends toujours pas ce que je fais. J'ai besoin de déclencher "soumettre" en quelque sorte, et je suppose que les données réelles que je soumets iront quelque part dans les params?

Répondre

0

Le code devrait faire ce que vous voulez. Quelles que soient les données que vous souhaitez utiliser, allez dans les paramètres comme vous l'avez dans votre exemple. Quand les params sont inclus comme argument pour urlopen une requête POST sera utilisée (au lieu d'un GET). En appelant simplement urlopen, je crois que la demande POST sera soumise. Si vous voulez la réponse, vous devrez utiliser f.read().

+0

cool, c'est facile. et le bouton de soumission ferait partie de l'URL? – Jeff

+0

Oui: regardez dans le html constituant le bouton submit - il y aura un attribut "action" avec une chaîne constituant l'url à laquelle vous devez envoyer votre requête codée. – twneale

+0

ouais, c'est ce à quoi je m'attendais. la page que j'essaie d'utiliser est plus compliquée je pense (du javascript et d'autres trucs), mais c'est bon de savoir que j'approche les choses correctement. Merci! – Jeff