J'ai juste besoin de récupérer le premier paragraphe d'une page Wikipedia.
Le contenu doit être formaté en HTML, prêt à être affiché sur mon site web (donc pas de BBCode o Wikipedia spécial code !)
J'ai juste besoin de récupérer le premier paragraphe d'une page Wikipedia.
Le contenu doit être formaté en HTML, prêt à être affiché sur mon site web (donc pas de BBCode o Wikipedia spécial code !)
Il y a en fait une très belle accessoire appelé extraits qui peut être utilisé avec des requêtes conçues spécifiquement à cet effet.
Extraits vous permettent d'obtenir des extraits d'articles (texte d'article tronqué). Il existe un paramètre appelé exintro qui peut être utilisé pour récupérer le texte de la section zéro (pas de ressources supplémentaires comme des images ou des infoboxes). Vous pouvez également récupérer des extraits avec une granularité plus fine, par exemple en fonction d'un certain nombre de caractères ( échangeurs ) ou par un certain nombre de phrases ( exsentences ).
Voici un exemple de requête http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow et le Bac à sable de l'API http://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow pour expérimenter davantage avec cette requête.
Veuillez noter que, si vous souhaitez obtenir le premier paragraphe spécifiquement, vous devez encore effectuer une analyse syntaxique supplémentaire, comme suggéré dans la réponse choisie. La différence ici est que la réponse renvoyée par cette requête est plus courte que certaines des autres requêtes API suggérées, car vous n'avez pas d'actifs supplémentaires tels que des images dans la réponse API à analyser.
Ce code vous permet de récupérer le contenu du premier paragraphe de la page en texte brut.
Certaines parties de cette réponse proviennent de aquí et donc aquí . Voir Documentation de l'API MediaWiki pour plus d'informations.
// action=parse: get parsed text
// page=Baseball: from the page Baseball
// format=json: in JSON format
// prop=text: send the text content of the article
// section=0: top content of the page
$url = 'http://en.wikipedia.org/w/api.php?format=json&action=parse&page=Baseball&prop=text§ion=0';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "TestScript"); // required by wikipedia.org server; use YOUR user agent with YOUR contact information. (otherwise your IP might get blocked)
$c = curl_exec($ch);
$json = json_decode($c);
$content = $json->{'parse'}->{'text'}->{'*'}; // Get the main text content of the query (it's parsed HTML)
// Pattern for first match of a paragraph
$pattern = '#<p>(.*)</p>#Us'; // http://www.phpbuilder.com/board/showthread.php?t=10352690
if(preg_match($pattern, $content, $matches))
{
// print $matches[0]; // Content of the first paragraph (including wrapping <p> tag)
print strip_tags($matches[1]); // Content of the first paragraph without the HTML tags.
}
Oui, c'est le cas. Par exemple, si vous souhaitez obtenir le contenu de la première section de l'article Stack Overflow utilisez une requête comme celle-ci :
Les parties signifient ceci :
format=xml
: Retourner le formateur de résultat en XML. D'autres options (comme JSON) sont disponibles. Cela n'affecte pas le format du contenu de la page elle-même, mais uniquement le format des données qui l'entourent.
action=query&prop=revisions
: Obtenir des informations sur les révisions de la page. Puisque nous ne spécifions pas quelle révision, la dernière est utilisée.
titles=Stack%20Overflow
: Obtenir des informations sur la page Stack Overflow
. Il est possible d'obtenir le texte de plus de pages en une seule fois, si vous séparez leurs noms par |
.
rvprop=content
: Renvoie le contenu (ou le texte) de la révision.
rvsection=0
: Retourner uniquement le contenu de la section 0.
rvparse
: Retourner le contenu analysé en HTML.
Gardez à l'esprit que cela renvoie l'ensemble de la première section, y compris des éléments tels que les notes de chapeau ("Pour d'autres utilisations "), les infoboxes ou les images.
Il existe plusieurs bibliothèques disponibles pour différents langages qui facilitent le travail avec les API. Il serait peut-être préférable pour vous d'utiliser l'une d'entre elles.
Je ne veux pas que le contenu soit analysé en HTML, je veux juste obtenir le "texte brut" (ni le code wikipedia).
L'API ne propose rien de tel. Et je peux comprendre pourquoi : parce que du point de vue de l'API, on ne sait pas exactement ce que doit contenir ce "texte brut". Par exemple, comment représenter les tableaux, s'il faut inclure "[citation nécessaire]", les boîtes de navigation ou les descriptions d'images.
Voici le code que j'utilise en ce moment pour un site web que je réalise et qui a besoin de récupérer les premiers paragraphes, le résumé et la section 0 des articles de Wikipédia, et tout cela est fait dans le navigateur (JavaScript côté client) grâce à la magie de JSONP ! --> http://jsfiddle.net/gautamadude/HMJJg/1/
Il utilise l'API de Wikipédia pour obtenir les paragraphes de tête (appelés section 0) en HTML, comme suit : http://en.wikipedia.org/w/api.php?format=json&action=parse&page=Stack_Overflow&prop=text§ion=0&callback= ?
Il supprime ensuite le HTML et les autres données indésirables, ce qui vous donne une chaîne propre de résumé d'article. Si vous voulez, vous pouvez, avec un peu d'ajustement, obtenir une balise HTML "p" autour des premiers paragraphes, mais pour l'instant, il n'y a qu'un caractère de nouvelle ligne entre eux.
Code :
var url = "http://en.wikipedia.org/wiki/Stack_Overflow";
var title = url.split("/").slice(4).join("/");
// Get leading paragraphs (section 0)
$.getJSON("http://en.wikipedia.org/w/api.php?format=json&action=parse&page=" + title + "&prop=text§ion=0&callback=?", function (data) {
for (text in data.parse.text) {
var text = data.parse.text[text].split("<p>");
var pText = "";
for (p in text) {
// Remove HTML comment
text[p] = text[p].split("<!--");
if (text[p].length > 1) {
text[p][0] = text[p][0].split(/\r\n|\r|\n/);
text[p][0] = text[p][0][0];
text[p][0] += "</p> ";
}
text[p] = text[p][0];
// Construct a string from paragraphs
if (text[p].indexOf("</p>") == text[p].length - 5) {
var htmlStrip = text[p].replace(/<(?:.|\n)*?>/gm, '') // Remove HTML
var splitNewline = htmlStrip.split(/\r\n|\r|\n/); //Split on newlines
for (newline in splitNewline) {
if (splitNewline[newline].substring(0, 11) != "Cite error:") {
pText += splitNewline[newline];
pText += "\n";
}
}
}
}
pText = pText.substring(0, pText.length - 2); // Remove extra newline
pText = pText.replace(/\[\d+\]/g, ""); // Remove reference tags (e.x. [1], [4], etc)
document.getElementById('textarea').value = pText
document.getElementById('div_text').textContent = pText
}
});
Il a beaucoup de bugs, essayez ce lien avec votre script : fr.wikipedia.org/wiki/Modular_Advanced_Armed_Robotic_System
Cette URL renverra le résumé au format XML.
http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryString=Agra&MaxHits=1
J'ai créé une fonction pour récupérer la description d'un mot clé à partir de Wikipedia.
function getDescription($keyword) {
$url = 'http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryString=' . urlencode($keyword) . '&MaxHits=1';
$xml = simplexml_load_file($url);
return $xml->Result->Description;
}
echo getDescription('agra');
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Wikipédia n'utilise pas le code BB, mais son propre code de balisage wiki.
1 votes
Cela ne fonctionne pas pour tous les articles de wikipedia. ro.wikipedia.org/w/