2009-04-22 6 views
6

Sto utilizzando BeautifulSoup e urllib2 per scaricare pagine HTML e analizzarle. Il problema è con pagine HTML errate. Sebbene BeautifulSoup sia bravo a gestire l'HTML malformato, ancora non è buono come Firefox.Utilizzo di Gecko/Firefox o Webkit ottenuto l'analisi HTML in python

Considerando che Firefox o Webkit sono più aggiornati e resilienti alla gestione di HTML, penso che sia l'ideale per utilizzarli per costruire e normalizzare l'albero DOM di una pagina e quindi manipolarlo tramite Python.

Tuttavia non riesco a trovare alcun collegamento Python per lo stesso. Qualcuno può suggerire un modo?

Ho trovato alcune soluzioni per eseguire un processo headless di Firefox e manipolarlo tramite Python, ma è disponibile una soluzione più pitonica.

+0

potrebbe essere che si sta utilizzando bella zuppa 3.1 che "fa significativamente peggiore su HTML del mondo reale alla versione 3.0.7a fa"? [1] dovuto analizzare alcune cose recentemente me stesso e ho scoperto che 3.0.7 gestisce davvero le cose molto meglio. usa easy_install per passare a 3.0.7a: sudo easy_install beautifulsoup == 3.0.7a [1] http://www.crummy.com/software/BeautifulSoup/3.1-problems.html –

risposta

1

Forse pywebkitgtk farebbe quello che ti serve.

+1

no non lo farà. pywebkitgtk è "semplicemente un visualizzatore di pagine". vuoi http://www.gnu.org/software/pythonwebkit che è una versione pesantemente modificata che incorpora webkit (!) e consente l'accesso al DOM. tutte le 3.000 funzioni e tutte le 20.000 proprietà. – user362834

1

vedere http://wiki.python.org/moin/WebBrowserProgramming

ci sono un sacco di opzioni - sto mantenendo la pagina di cui sopra in modo che io non continuo a ripetere me stesso.

si dovrebbe guardare pigiama-desktop: vedere l'esempio/esempio uitest perché usiamo esattamente questo trucco per ottenere copie della pagina HTML "out", in modo che il compilatore python-to-javascript possa essere testato confrontando il risultati della pagina dopo ogni test unitario.

Ciascuno dei runtime supportati e utilizzati da pigiama-desktop è in grado di consentire l'accesso alla proprietà "innerHTML" dell'elemento body del documento (e molto altro ancora).

bottom line: è banale fare ciò che vuoi fare, ma devi sapere dove cercare per scoprire come farlo.

l.