Algoritmo tipo Instapaper

Qualcuno di un algoritmo che estrae i contenuti da una pagina web? come instapaper ?

Ci sono due passaggi per ciò che Instapaper fa:

  1. Trova il blocco del contenuto principale nella pagina (escludendo intestazioni, piè di pagina, menu ecc.)
  2. Da questo blocco di contenuti estrai e formatta il testo

Per trovare il blocco del contenuto (in genere un elemento di blocco html, come un div contenente il contenuto del testo della pagina chiave), Instapaper utilizza un algoritmo molto simile a quello utilizzato dalla leggibilità . Puoi vedere la fonte di readability.js per vedere cosa sta succedendo, ma al suo interno cerca di trovare l’area sulla pagina con il più alto rapporto testo / link, sebbene abbia anche altre metriche di punteggio semplici (es. in cima alla mia testa, cose come il rapporto tra testo e virgole, elementi para ecc.) che entrano nell’euristica.

Una volta identificato l’elemento nodo radice, con il contenuto pertinente, dovrai formattarlo, se vuoi puoi semplicemente estrarre l’elemento nodo contenente il testo dal documento sorgente e inserirlo nel tuo, ma in realtà tu Probabilmente vorrai rimuovere gli stili esistenti e applicare i tuoi, per un look and feel standard. Se vuoi produrre un testo piacevole, puoi usare il Renderer di Jericho.

update1 : dovrei menzionare anche qualcos’altro che fa Instapaper – che segue i link “pagination” ( i link “next” o “1”, “2”, “3” ) dell’articolo alla loro conclusione, in modo che un pezzo che può estendersi su molte pagine nell’originale e ti sarà reso come un singolo documento.

update2 Recentemente mi sono imbattuto in questo confronto tra algoritmi di estrazione del testo

c’è un’applicazione open source che analizza il testo di un articolo da qualsiasi pagina web

https://github.com/jiminoc/goose/wiki

dovrebbe fare il trucco

Se vuoi solo tutto il contenuto e nessuna della formattazione in Python

>>> from BeautifulSoup import BeautifulSoup >>> from urllib import urlopen >>> soup = BeautifulSoup(urlopen("http://www.python.org/").read()) >>> contents = ''.join(soup.findAll(text=True)) 

fa il trucco

boilerpipe è opensource java. l’algoritmo è pubblicato in un documento scientifico in modo da poter leggere quanto bene rispetto ad altri algoritmi. leggere attorno ad esso sembra essere uno dei migliori.