web-dev-qa-db-fra.com

Bouton "Cliquer" avec les demandes

J'ai ce petit site que je souhaite remplir avec la bibliothèque de demandes. Le problème est que je ne peux pas accéder au site suivant lorsque vous remplissez les données du formulaire et appuyez sur le bouton (Entrée ne fonctionne pas).

L'important, c'est que je ne peux pas le faire via un bot de clic quelconque. Cela doit être fait pour que je puisse courir sans graphiques.

info = {'name':'JohnJohn',
        'message':'XXX',
        'sign':"XXX",
        'step':'1'}

Les trois premières entrées nom, message, signe sont les zones de texte et l'étape est, je pense, le bouton.

r = requests.get(url)
r = requests.post(url, data=info)

print(r.text)

Les données du formulaire ressemblent à ceci lorsque j'envoie une demande via chrome manuellement:

  • nom: JohnJohn
  • message: XXX
  • signe: XXX
  • étape 1

L'élément bouton ressemble à ceci:

<td colspan="2" style="text-align: center;">
    <input name="step" type="hidden" value="1">
    <button id="button" type="button" onclick="myClick();"
     style="background-color: #ef4023;  width: 80px; font-face: times; font-size: 14pt;">
        Wyślij
    </button>
</td>

Le site suivant si je fais cela manuellement a les mêmes adresses.

6
Repcak

Comme vous pouvez le voir sur la photo que vous avez publiée, cliquer sur le bouton déclenche un code JavaScript, à savoir une méthode appelée myClick().

Il n'est pas simple de cliquer sur cette chose en utilisant la bibliothèque de requêtes pythons. Vous pourriez avoir plus de chance en essayant de découvrir ce qui se passe à l'intérieur de myClick(). Je suppose qu'à un moment donné, une demande POST sera faite à un point de terminaison HTTP. Si vous pouvez comprendre cela, vous pouvez le traduire dans votre code python.

Si cela ne fonctionne pas, une autre option serait d'utiliser quelque chose comme Selenium/PhantomJS, qui vous donne la possibilité d'avoir un navigateur réel, sans tête et scriptable. En utilisant un tel outil, vous pouvez le faire remplir des formulaires et cliquer sur des boutons. Vous pouvez y jeter un œil alors répondez , car cela vous montre comment utiliser Selenium + PhantomJS à partir de python.

Veuillez vous assurer de ne pas abuser de ces méthodes en spammant des forums ou [insérez ici une activité illégale ou autrement abusive].

13
Dave

Dans une telle situation, lorsque vous devez forger la demande d'un bouton scripté, il peut être plus facile de ne pas deviner la logique de JS, mais plutôt d'effectuer un clic physique et de regarder dans chrome renifleur réseau de devtools qui vous donne une requête simple faite qui, à son tour, peut être facilement forgée en Python

1
fnr