web-dev-qa-db-fra.com

Comment obtenir un texte brut de Wikipedia

J'aimerais écrire un script qui obtient la section Description Wikipedia uniquement. C'est-à-dire quand je dis

/wiki bla bla bla

cela ira à la page Wikipedia pour bla bla bla , obtenez ce qui suit et renvoyez-le à la salle de discussion:

"BLA BLA BLA" est le nom d'une chanson fabriquée par Gigi d'Agostino. Il a décrit cette chanson comme "un morceau que j'ai écrit penser à toutes les personnes qui parlent et qui parlent sans rien dire". Les échantillons vocaux de premier plan mais non sensibles sont tirés de la chanson de la bande britannique "Pourquoi l'avez-vous fait"

Comment puis-je faire ceci?

22
Wifi

Utilisez le API MediaWiki , qui fonctionne sur Wikipedia. Vous devrez faire une analyse de la donnée vous-même.

Par exemple:

http://fr.wikipedia.org/w/apl.php?Action=Query&prop=revisions&rvProp=Content&format=json&&titles=bla%20BLA%20BLA

moyens

fetch (action = Query) Le contenu (RVProp = Contenu) de la révision la plus récente de la page principale (Titre = Main% 20page) au format JSON (format = JSON).

Vous voudrez probablement rechercher la requête et utiliser le premier résultat, pour gérer les erreurs d'orthographe et similaires.

19
Katriel

Vous pouvez obtenir des données Wiki dans des formats de texte. Si vous devez accéder à de nombreuses informations de titre, vous pouvez obtenir tous les données Wiki de Titre dans un seul appel. Utilisez le caractère de tuyaux (|) pour séparer chaque titres.

http://fr.wikipedia.org/w/apl.php?format=json&action=Query&prop=exxts&exlimit=max&explaintext&exintro&titles=yahoo|google&redirects=

Ici, cet appel d'API renvoie à la fois des données Googles et Yahoos.

explaintext => Return Extraits en tant que texte brut au lieu de HTML limité.

exlimit = max (maintenant ses 20); Sinon, un seul résultat reviendra.

exintro => renvoie uniquement le contenu avant la première section. Si vous voulez des données complètes, supprimez-le simplement.

redirects= Résoudre les problèmes de redirection.

9
Anuraj

Vous pouvez chercher juste la première section à l'aide de l'API:

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvsection=0&titles=Bla%20Bla%20Bla&rvprop=content

Cela vous donnera WikiteXT cru, vous devrez traiter des modèles et des balises.

Ou vous pouvez récupérer toute la page rendue dans HTML qui a ses propres avantages et inconvénients en ce qui concerne l'analyse:

http://en.wikipedia.org/w/api.php?action=parse&prop=text&page=Bla_Bla_Bla

Je ne peux pas voir un moyen facile d'obtenir un écran HTML analysé de la première section dans un seul appel, mais vous pouvez le faire avec deux appels en passant le wikitext que vous recevez de la première URL de retour avec text= à la place du page= dans la deuxième URL.

MISE À JOUR

Désolé j'ai négligé le "texte clair" de votre question. Obtenez la partie de l'article que vous souhaitez comme html. C'est beaucoup plus facile à dénicher la bande HTML que de dépouiller WikiteXt!

7
hippietrail

DBPEDIA est la solution idéale pour ce problème. Ici: http://dbpedia.org/page/metallica , regardez les données parfaitement organisées à l'aide de RDF. On peut interroger pour tout ce qui est ici à http://dbpedia.org/sparql à l'aide de SPARQL, la langue de requête pour le RDF. Il y a toujours un moyen de trouver la pageId afin d'obtenir du texte descriptif, mais cela devrait faire pour la plupart.

Il y aura une courbe d'apprentissage pour RDF et SPARQL pour écrire tout code utile, mais c'est la solution parfaite.

Par exemple, une exécution de requête pour Metallica renvoie une table HTML avec le résumé dans plusieurs langues différentes:

<table class="sparql" border="1">
  <tr>
    <th>abstract</th>
  </tr>
  <tr>
    <td><pre>"Metallica is an American heavy metal band formed..."@en</pre></td>
  </tr>
  <tr>
    <td><pre>"Metallica es una banda de thrash metal estadounidense..."@es</pre></td>
... 

Requête SPARQL:

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX dbres: <http://dbpedia.org/resource/>

SELECT ?abstract WHERE {
 dbres:Metallica dbpedia-owl:abstract ?abstract.
}

Modifiez "Metallica" à n'importe quel nom de ressource (nom de ressource comme dans wikipedia.org/resourcename) pour les requêtes relatives à l'abstrait.

4

Je pense que la meilleure option est d'utiliser le extracts ProP qui vous fournit MediaWiki API . Il ne vous renvoie que des tags (B, I, H #, Span, UL, LI) et supprime les tables, les infoboxes, les références, etc.

http://fr.wikipedia.org/w/apla.php?action=Query&prop=exxtract&titles=bla%20bla%20bla&format=xml vous donne quelque chose de très simple:

<api><query><pages><page pageid="4456737" ns="0" title="Bla Bla Bla"><extract xml:space="preserve">
<p>"<b>Bla Bla Bla</b>" is the title of a song written and recorded by Italian DJ Gigi D'Agostino. It was released in May 1999 as the third single from the album, <i>L'Amour Toujours</i>. It reached number 3 in Austria and number 15 in France. This song can also be heard in an added remixed mashup with <i>L'Amour Toujours (I'll Fly With You)</i> in its US radio version.</p> <p></p> <h2><span id="Background_and_writing">Background and writing</span></h2> <p>He described this song as "a piece I wrote thinking of all the people who talk and talk without saying anything". The prominent but nonsensical vocal samples are taken from UK band Stretch's song <i>"Why Did You Do It"</i>.</p> <h2><span id="Music_video">Music video</span></h2> <p>The song also featured a popular music video in the style of La Linea. The music video shows a man with a floating head and no arms walking toward what appears to be a shark that multiplies itself and can change direction. This style was also used in "The Riddle", another song by Gigi D'Agostino, originally from British singer Nik Kershaw.</p> <h2><span id="Chart_performance">Chart performance</span></h2> <h2><span id="References">References</span></h2> <h2><span id="External_links">External links</span></h2> <ul><li>Full lyrics of this song at MetroLyrics</li> </ul>
</extract></page></pages></query></api>

Vous pouvez ensuite exécuter une expression régulière, à JavaScript serait quelque chose comme ceci (vous devez peut-être faire des modifications mineures:

/^.*<\s*extract[^>]*\s*>\s*((?:[^<]*|<\s*\/?\s*[^>hH][^>]*\s*>)*).*<\s*(?:h|H).*$/.exec(data)

Ce qui vous donne (seulement paragrathems, audacieux et en italique):

"Bla bla bla"Est le titre d'une chanson écrite et enregistrée par Italian DJ Gigi d'Agostino. Il a été publié en mai 1999 en tant que troisième single de l'album, L'amour toujours. Il a atteint le numéro 3 en Autriche et numéro 15 en France. Cette chanson peut également être entendue dans un mashup amplifié ajouté avec J'amours Toujours (je vais voler avec vous) dans sa version radio américaine.

1
ESL

Premier chèque ici .

Il y a beaucoup de syntaxes non valides dans le marquage de texte de Mediawiki. (Erreurs fabriquées par les utilisateurs ...) Seuls MediaWiki peut analyser ce texte infernal. Mais il y a toujours des alternatives à essayer dans le lien ci-dessus. Pas parfait, mais mieux que rien!

0
GyuHyeon Choi

"... un script qui obtient la section de description de Wikipedia uniquement ..."

Pour votre candidature, vous pouvez regarder sur les décharges, par exemple: http://dumps.wikimedia.org/enwiki/20120702/

Les fichiers particuliers dont vous avez besoin sont des fichiers XML "abstrait", par exemple, ce petit (22,7 Mo):

http://dumps.wikimedia.org/enwiki/20120702/fenwiki-20120702-abstract19.xml

Le XML a une étiquette appelée "abstrait" qui contient la première partie de chaque article.

Sinon wikipedia2text utilise, par exemple W3M pour télécharger la page avec des modèles étendus et formatés au texte. De cela, vous pourrez peut-être choisir l'abstrait via une expression régulière.

0
Finn Årup Nielsen

Vous pouvez essayer wikiextractor: http://medialab.di.unipi.it/wiki/wikipedia_extractor

C'est pour Python 2.7 et 3,3+.

0
Harriv