Soumettre des données via un formulaire web et d'en extraire les résultats
Mon python niveau est Débutant. Je n'ai jamais écrit un web grattoir ou un robot. J'ai écrit un code python pour se connecter à une api et d'extraire les données que je veux. Mais pour certains, les données extraites je veux obtenir le sexe de l'auteur. J'ai trouvé ce site web http://bookblog.net/gender/genie.php
mais l'inconvénient est que il n'y a pas une api disponible. Je me demandais comment écrire un python de soumettre des données du formulaire dans la page et d'en extraire les données de retour. Il serait d'une grande aide si je pouvais obtenir quelques indications à ce sujet.
C'est la forme dom:
<form action="analysis.php" method="POST">
<textarea cols="75" rows="13" name="text"></textarea>
<div class="copyright">(NOTE: The genie works best on texts of more than 500 words.)</div>
<p>
<b>Genre:</b>
<input type="radio" value="fiction" name="genre">
fiction
<input type="radio" value="nonfiction" name="genre">
nonfiction
<input type="radio" value="blog" name="genre">
blog entry
</p>
<p>
</form>
page de résultats dom:
<p>
<b>The Gender Genie thinks the author of this passage is:</b>
male!
</p>
OriginalL'auteur Null-Hypothesis | 2011-12-04
Vous devez vous connecter pour publier un commentaire.
Pas besoin d'utiliser mécaniser, il suffit d'envoyer à la forme correcte des données dans une requête POST.
Aussi, l'utilisation d'une expression régulière pour parser le HTML est une mauvaise idée. Vous feriez mieux d'utiliser un analyseur HTML comme lxml.html.
Dans un module d'import, si les deux noms ont une
.
entre eux, ce qui signifie que le deuxième nom est dans le nom précédent. Le module que vous souhaitez installer est lxml.merci je l'ai réalisé après avoir mis le commentaire. Grâce agianl
Qu'est-ce que la méthode a été
POST
?OriginalL'auteur Acorn
Vous pouvez utiliser mécaniser de soumettre et de récupérer le contenu, et le re module pour obtenir ce que vous voulez. Par exemple, le script ci-dessous est-il pour le texte de votre question:
Que fait-il? Il crée un
mechanize.Browser
et va à l'URL:Puis il sélectionne la forme (car il y a un seul formulaire à remplir, il sera le premier):
Aussi, il définit les entrées de la forme...
... et de le soumettre:
Maintenant, nous obtenons le résultat:
Nous savons que le résultat est de la forme:
Nous avons donc créer une regex pour la mise en correspondance et l'utilisation
re.findall()
:Maintenant, le résultat est à votre disposition:
OriginalL'auteur brandizzi
Vous pouvez utiliser mécaniser, voir exemples pour plus de détails.
Ah, oui, c'est un module externe. Oui, vous pouvez le faire easy_install mécaniser.
OriginalL'auteur jan zegan