Erreur dans l'utilisation de Python / mécaniser select_form ()?
-
20-09-2019 - |
Question
Je suis en train de mettre au rebut des données à partir d'un site Web. Les scripts que je suis en train d'écrire, devrait obtenir le contenu de la page:
http://www.atpworldtour.com/Rankings/Singles.aspx
doit simuler l'utilisateur va creux toutes les options pour Classement supplémentaires et les dates et simuler en cliquant sur Go, puis après l'extraction des données doivent utiliser la fonction de retour.
Pour l'instant, je suis en train de sélectionner simplement cette option pour permanent supplémentaire:
<option value="101" >101-200</option>
Voici mon (faible) tentative pour essayer de le faire:
from mechanize import Browser
from BeautifulSoup import BeautifulSoup
import re
import urllib2
br = Browser();
br.open("http://www.atpworldtour.com/Rankings/Singles.aspx");
br.select_form(nr=0);
br["r"] = "101";
response = br.submit();
Cependant, il échoue juste sur le select_form (nr = 0) qui devrait être la sélection de la première forme.
Ceci est le journal retourné par Python:
>>> from mechanize import Browser
>>>
>>> from BeautifulSoup import BeautifulSoup
>>> import re
>>> import urllib2
>>>
>>>
>>>
>>> br = Browser();
>>> br.open("http://www.atpworldtour.com/Rankings/Singles.aspx");
<response_seek_wrapper at 0x311bb48L whose wrapped object = <closeable_response
at 0x311be88L whose fp = <socket._fileobject object at 0x0000000002C94408>>>
>>> br.select_form(nr=0);
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build\bdist.win-amd64\egg\mechanize\_mechanize.py", line 505, in select_
form
File "build\bdist.win-amd64\egg\mechanize\_html.py", line 546, in __getattr__
File "build\bdist.win-amd64\egg\mechanize\_html.py", line 559, in forms
File "build\bdist.win-amd64\egg\mechanize\_html.py", line 228, in forms
mechanize._html.ParseError
Je ne pouvais pas trouver une explication correcte de toutes les fonctions de la page d'accueil de mécaniser. Quelqu'un peut-il me soit pointer vers un tutoriel approprié pour l'utilisation de formulaires et à mécaniser ou me aider sur cette question?
Anthony
La solution
Je pense que vous utilisez correctement la bibliothèque, mais l'analyseur semble avoir des problèmes avec cette page particulière. J'utilise la bibliothèque de la même manière sur une autre page ( " http://flashcarddb.com/login « ) et il ne soulève pas d'erreur.
Autres conseils
Je viens de rencontrer dans ce même problème. La page que j'accédait passé la validation W3C, donc je ne pense pas que ce soit un problème de balisage. Cependant, bien rangé html plaints que la page avait un dans un. Une fois que je fixe, mécaniser commencé à travailler.
En outre, j'ai vu une réponse à cette question sur une liste de diffusion. Je voudrais simplement noter que l'ajout d'usine = mechanize.RobustFactory () à mechanize.Browser () n'a pas changé le résultat.
Clue: définir plus sur votre mechanize.Browser ()