Domanda

Sto cercando di scartare alcuni dati da un sito web. Gli script che sto cercando di scrivere, dovrebbe ottenere il contenuto della pagina:

http://www.atpworldtour.com/Rankings/Singles.aspx

In caso di simulare l'utente in corso attraverso ogni opzione per ulteriori Classifiche e le date e simulare cliccando su Go poi, dopo il recupero dei dati dovrebbe utilizzare la funzione di nuovo.

Per ora ho cercato di selezionare solo questa opzione per Standing aggiuntive:

            <option value="101" >101-200</option>

Ecco il mio (scarso) tentativo di provare a fare questo:

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

Tuttavia solo fallisce sul select_form (n = 0) che dovrebbe essere selezionato il primo modulo.

Questo è il log restituito da 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

non riuscivo a trovare una corretta spiegazione di tutte le funzioni del Mechanize home page. Qualcuno può o mi puntare a un adeguato tutorial per l'utilizzo forme e Mechanize o aiutarmi su questa particolare questione?

Anthony

È stato utile?

Soluzione

Credo che si sta utilizzando correttamente la biblioteca, ma il parser sembra avere problemi con quella determinata pagina. Sto utilizzando la libreria nello stesso modo in un'altra pagina ( " http://flashcarddb.com/login ") e non genera un errore.

Altri suggerimenti

Ho appena imbattuto in questo stesso problema. La pagina che stava accedendo passata validazione W3C, quindi non ho pensato che fosse un problema di markup. Tuttavia, HTML Tidy lamentato che la pagina ha avuto una all'interno di una. Una volta mi fisso che, Mechanize iniziato a lavorare.

Inoltre, ho visto una risposta a questo problema in una mailing list. Vorrei solo sottolineare che l'aggiunta di fabbrica = mechanize.RobustFactory () per mechanize.Browser () non ha cambiato il risultato.

Indizio: definire più sulla tua mechanize.Browser ()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top