Domanda

Mi dispiace ragazzi, ho fatto finta di fare domande su come integrare i dati di Wikipedia nella mia applicazione e francamente non penso di aver avuto successo da parte mia mentre ho provato tutte le idee e un po 'arrendermi quando leggo un vicolo cieco o un ostacolo. Proverò a spiegare cosa sto esattamente cercando di fare qui.

Ho una semplice directory di luoghi come città e paesi. La mia applicazione è una semplice applicazione basata su Ajax php con una funzione di ricerca e navigazione. Le persone si iscrivono e si associano a una città e quando un utente naviga nelle città, può vedere persone e aziende in quella città, cioè chiunque faccia parte del nostro sistema.

Quella parte è un po 'facilmente configurabile da sola e funziona bene. Il fatto è che i miei risultati di ricerca sarebbero nel formato, cioè qualcuno che cerca diciamo Pechino. Tornerebbe in una finestra di interfaccia a tre schede:

  1. First Tab avrebbe una casella contenente informazioni sulla città per Pechino
  2. Seond sarebbe una scheda del paese che contiene una casella informativa delle informazioni sul paese dalla Cina
  3. La terza scheda contiene Elenchi di tutti i contatti a Pechino.

Il contenuto delle prime due schede dovrebbe provenire da Wikipedia. Adesso sono totalmente perso con quale sarebbe il modo migliore per farlo e poi una volta deciso su una metodologia: come posso farlo e renderlo tale che è abbastanza robusto.

Un paio di idee buone e cattive che ho potuto digerire finora sono:

  1. Esegui una richiesta di arricciatura direttamente su Wikipedia e analizza i dati di ritorno ogni volta che viene effettuata una ricerca. Non è necessario conservare una copia locale in questo caso dei dati su Wikipedia. L'altro problema è che dipende interamente dai dati provenienti da una terza posizione remota e dubito che sia possibile fare ogni volta una richiesta di Wikipedia per recuperare informazioni di base. Inoltre, considerando che i dati su Wikipedia richiedono di essere analizzati ad ogni richiesta - questo supererà carichi pesanti del server ... o sto speculando qui.

  2. Scarica il dump di Wikipedia e fai una query. Bene, ho scaricato l'intero database ma ci vorrà un'eternità per importare tutte le tabelle dal dump xml. Inoltre, considera il fatto che voglio solo estrarre un elenco di paesi e città e le loro caselle informative: molte informazioni nella discarica non mi sono di alcun aiuto.

  3. Crea le mie tabelle locali e crea uno script cron [spiegherò perché cron job qui] che analizzerebbe in qualche modo tutte le pagine dei paesi e delle città su Wikipedia e le convertirà in un formato che posso usare nelle mie tabelle . Tuttavia, onestamente, non ho bisogno di tutte le informazioni nelle caselle informative, dato che se potessi anche ottenere il markup di base delle caselle informative così com'è, sarebbe più che sufficiente per me. Come:

Titolo del Paese | Infobox Testo non elaborato

Posso estrarre personalmente cose come coordinate e altri dettagli se voglio.

Ho anche provato a scaricare set di dati di terze parti da infochiumps e dbpedia ma il set di dati da infochimps è incompleto e non conteneva tutte le informazioni che volevo visualizzare - inoltre con dbpedia non ho assolutamente idea di cosa fare con il file CSV I scaricato da infobox e temo che potrebbe non essere completo.

Ma questa è solo una parte del problema qui. Voglio un modo per mostrare le informazioni di wikipedia - Avrò tutti i link che puntano a wikipedia e una bella informazione da wikipedia mostrata correttamente in tutto MA MA il problema è che ho bisogno di un modo che periodicamente posso aggiornare le informazioni che ho da Wikipedia così almeno non ho dati totalmente obsoleti. Come pure diciamo un sistema che può controllare e se abbiamo un nuovo paese o una nuova posizione, può analizzare le informazioni e in qualche modo recuperarle. Sto facendo affidamento su categorie di paesi e città su Wikipedia per questo qui, ma francamente tutte queste idee sono su carta, parzialmente codificate ed è un gran casino.

Sto programmando in PHP e MySQL e la mia scadenza si sta avvicinando rapidamente - data la situazione e i requisiti di cui sopra qual è il metodo migliore e più pratico da seguire e implementare. Sono totalmente aperto alle idee - esempi pratici se qualcuno ha fatto qualcosa di simile - Mi piacerebbe sentire: D

È stato utile?

Soluzione

Suggerirei quanto segue

  • Richiedi la città da Wikipedia quando viene creata (la città) nel tuo DB
  • Analizza i dati, archivia una copia locale con il timestamp dell'ultimo aggiornamento
  • all'accesso, aggiorna i dati se necessario. Puoi visualizzare quello vecchio con una filigrana dicendo che è ... giorni fa e ora in aggiornamento. Quindi passare a quello appena acquistato al termine dell'aggiornamento. Hai detto che stai usando AJAX, quindi non sarà un problema

Ridurrebbe al minimo le query su Wikipedia e il tuo servizio non mostrerà pagine vuote anche quando Wikipedia non è raggiungibile.

Altri suggerimenti

Un paio di cose che mi vengono in mente:

  1. Visualizza i dati di Wikipedia in un iframe sul tuo sito.

  2. Usa Curl per ottenere l'html da wikipedia, quindi usa un foglio di stile personalizzato per modellarlo e / o nascondere le parti che non desideri vengano visualizzate.

Cercare di analizzare effettivamente l'HTML ed estrarre i pezzi che desideri sarà un dolore enorme, e molto probabilmente dovrà essere personalizzato per ogni città. Meglio far funzionare qualcosa di semplice per ora, poi tornare indietro e migliorarlo in seguito se si decide di farlo davvero.

Che ne dici di usare uno dei Wikipedia Geocoding Webservices

Ce ne sono diversi disponibili in cui puoi passare ad es. codice postale e paese per un breve riepilogo dell'articolo e un collegamento all'articolo di Wikipedia.

Se fosse abbastanza.

Dai un'occhiata a DBPedia che contiene una buona estrazione dei dati di Wikipedia in formato CSV.

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