2009-10-20 14 views
12

Ogni tanto ricevo un documento di Word che devo visualizzare come pagina web. Attualmente sto usando le flatpage di Django per ottenere ciò afferrando il contenuto html generato da MS Word. L'html generato è abbastanza disordinato. C'è un modo migliore che può generare un html molto semplice per risolvere questo problema usando Python?Come si converte un documento di Word in html molto semplice in Python?

risposta

6

Una buona soluzione implica il caricamento in Google Docs e l'esportazione della versione html da esso. (Ci deve essere una API per questo?)

Fa così tanti "clean up"; Beautiful Soup in fondo alla strada può essere utilizzato per apportare ulteriori modifiche, a seconda dei casi. È la libreria di analisi html più potente ed elegante del pianeta.

Questo è uno standard noto per le società di giornalisti.

+1

Ma come si fa esattamente da Google Documenti? Carico il mio MSWord doc e scelgo l'opzione di conversione - perde tutti gli schemi – likejiujitsu

2

Dipende da quanta formattazione e immagini hai a che fare. Faccio una delle un paio di cose:

  • Google Docs: Probabilmente il più vicino si arriva alla formattazione originale e utilizzabile HTML.
  • Markdown: Abbandona la formattazione. Incollalo in un editor di testo semplice, eseguilo su Markdown e fissa il resto a mano.
+1

Come ottengo l'HTML da Google Doc? È l'opzione Scarica come HTML? –

+1

+1: i file Word Doc sono * molto * difficili da utilizzare. Molti strumenti li convertiranno, tra cui Open Office. Google Documenti ha una semplice API poiché è un servizio Web HTTP. –

+3

MS Word -> HTML è semplicemente il male. Avevo un client che mi dava un 95 (!) Documento di pagina contenente centinaia di "luoghi da vedere" e dicevo "dovrebbe essere facile inserirlo nel database". Arrggghh! L'ho fatto e gli ho addebitato $ 100/ora per il privilegio, ma penso di aver pagato meno della quantità di dolore. L'HTML è stato il peggiore con cui abbia mai avuto a che fare. –

2

È inoltre possibile utilizzare Abiword/wvWare convertire il documento parola per XHTML e poi analizzarlo con BeautifulSoup/ElementTree/etc. per preelaborarlo se necessario. Nella mia esperienza, Abiword fa un ottimo lavoro nel convertire file Word e produrre file XHTML relativamente puliti.

Devo dire che Abiword può essere eseguito sulla riga di comando, quindi è facile integrarlo in un processo automatizzato.

3

mio super-semplice applicazione WordOff ha un API per ripulire cruft da HTML Word-esportato. È possibile sovrascrivere il metodo di salvataggio del modello flatpages per reindirizzare il codice HTML attraverso l'API la prima volta che viene salvato. Qualcosa di simile:

import urllib 
import urllib2 

def decruft(html): 
    data = urllib.urlencode({'html' : html}) 
    req = urllib2.Request('http://wordoff.org/api/clean', data) 
    response = urllib2.urlopen(req) 
    return response.read() 

def save(self, **kwargs): 
    if not self.pk: # only de-cruft when content is first added 
     self.content = decruft(self.content) 
    super(FlatPage, self).save(**kwargs) 
+0

WordOff è abbastanza carino in questo genere di cose –

+2

Se si desidera utilizzare wordoff localmente, è possibile scaricare il modulo e utilizzare il suo metodo "superClean" per ottenere lo stesso risultato: https://raw.github.com/tomdyson/wordoff/ master/wordoff.py –

+4

Hey tomd, WordOff.org è scaduto già con – fedmich

2

Word 2010 ha la capacità di "salvare come pagina Web filtrata". Ciò eliminerà la stragrande maggioranza dell'HTML che Word inserisce.

4

ho trovato questa pagina web: http://www.textfixer.com/html/convert-word-to-html.php

converte un testo formattato per semplice markup HTML, conservando grassetto, corsivo, link e paragrafi, ma non l'aggiunta di tag per font-dimensioni e volti. Esattamente quello di cui avevo bisogno per risparmiare un po 'di tempo.

+0

Questo è davvero fantastico! Funziona esattamente come vorrei. – Justin

Problemi correlati