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

Était-ce utile?

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 ()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top