Fond:Soumission de formulaire en Python sans attribut de nom
En utilisant urllib et urllib2 en Python, vous pouvez effectuer une soumission de formulaire.
Vous créez d'abord un dictionnaire. Ensuite, vous utilisez la méthode urlencode d'urllib pour transformer ce dictionnaire.
params = urllib.urlencode(formdictionary)
Vous pouvez maintenant faire une demande d'URL avec urllib2 et passer les params variables comme paramètre secondaire avec le premier paramètre étant l'URL. D'après ce que je comprends, urlencode code automatiquement le dictionnaire en html et ajoute la balise d'entrée. Il prend la clé pour être l'attribut de nom. Il faut que la valeur du dictionnaire soit la valeur de l'attribut name. Urllib2 envoie ce code html via une requête HTTP POST.
Problème:
Ceci est bien si le code HTML que vous soumettez à est formaté de manière standard avec l'entrée de balise html ayant l'attribut name.
<input id="32324" type="text" name="search" >
Mais, il y a le cas où le code html n'est pas correctement formaté. Et la balise d'entrée html n'a qu'un attribut id sans attribut de nom. Y a-t-il un autre moyen d'accéder à la balise d'entrée via l'attribut id? Ou est-il peut-être encore un autre moyen?
Solution:
?
Je pense qu'Ayman peut être sur quelque chose. Le formulaire d'entrée peut être une mauvaise direction. Le Javascript gère l'événement de soumission onclick. Je n'ai aucune idée de comment faire cet événement en python. Je vais essayer d'en savoir plus sur ce sujet. –
@Ayman: Merci d'avoir testé cela - j'avais tort, et j'ai supprimé ma réponse trompeuse. – RichieHindle
Un moyen facile d'émuler le code JavaScript est d'inspecter les en-têtes HTTP pour voir ce qui est envoyé par le navigateur, puis d'envoyer la même requête en utilisant urllib. L'extension Live HTTP Headers pour Firefox est utile à cet égard. https://addons.mozilla.org/en-US/firefox/addon/3829 –