Errore per Python / meccanizzare select_form ()?
-
20-09-2019 - |
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
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 ()