0

How to get paragraph page from Wikipedia API ?

For instance, I'd like to get the following paragraph: https://fr.wikipedia.org/wiki/Douarnenez#Urbanisme

I'm only able to get the entire page with:

https://fr.wikipedia.org/w/api.php?action=query&format=json&prop=revisions&titles=Douarnenez&formatversion=2&rvprop=content&rvslots=*
DevonDahon
  • 7,460
  • 6
  • 69
  • 114

2 Answers2

1

Credits: answer to: How to get a text of a specific section via wikipedia api - by Florian

I followed these steps in order to get the information you need.

First, get the index of the section you want to get - for that, use this endpoint for get the sections of the wiki page:

https://fr.wikipedia.org/w/api.php?action=parse&format=json&page=Douarnenez&prop=sections

Here is the API sandbox link you can try out.

In your specific case, I believe it's index=10:

{
  "toclevel": 2,
  "level": 3,
  "line": "Typologie",
  "number": "3.1",
  "index": "10",
  "fromtitle": "Douarnenez",
  "byteoffset": 18641,
  "anchor": "Typologie"
}

Then, use this next endpoint for get the text in the given section:

https://fr.wikipedia.org/w/api.php?action=parse&format=json&page=Douarnenez&prop=wikitext&section=10&disabletoc=1&utf8=1

The result is as follows - here is the link of the API sandbox:

{
  "parse": {
    "title": "Douarnenez",
    "pageid": 4596068,
    "wikitext": {
      "*": "=== Typologie ===\nDouarnenez est une commune urbaine, car elle fait partie des communes denses ou de densité intermédiaire, au sens de la grille communale de densité de l'[[Institut national de la statistique et des études économiques|Insee]]<ref group=Note>Selon le zonage des communes rurales et urbaines publié en novembre 2020, en application de la nouvelle définition de la ruralité validée le {{date-|14 novembre 2020}} en comité interministériel des ruralités.</ref>{{,}}<ref >{{Lien web |url=https://www.observatoire-des-territoires.gouv.fr/typologie-urbain-rural |titre=Typologie urbain / rural |site=observatoire-des-territoires.gouv.fr |consulté le= 26 mars 2021}}.</ref>{{,}}<ref >{{Lien web |url=https://www.insee.fr/fr/metadonnees/definition/c1472|titre=Commune urbaine - définition |site=Insee.fr|consulté le= 26 mars 2021}}.</ref>{{,}}<ref >{{Lien web |url= https://www.observatoire-des-territoires.gouv.fr/methodes/comprendre-la-grille-de-densite|titre= Comprendre la grille de densité|site=observatoire-des-territoires.gouv.fr |consulté le= 26 mars 2021}}.</ref>. \nElle appartient à l'[[unité urbaine]] de Douarnenez, une unité urbaine monocommunale<ref>{{Lien web|url=https://www.insee.fr/fr/metadonnees/cog/unite-urbaine/UU202029306-douarnenez |titre=Unité urbaine 2020 de Douarnenez|site=insee.fr|consulté le= 26 mars 2021}}.</ref> de {{Unité|13902|habitants}} en 2017, constituant une ville isolée<ref name=\"UU2020\">{{Lien web|url=https://www.insee.fr/fr/information/4802589 |titre=Base des unités urbaines 2020 |date=21 octobre 2020|site=insee.fr |consulté le= 26 mars 2021}}.</ref>{{,}}<ref name=\"UU20202b\">{{Lien web|url=https://www.insee.fr/fr/statistiques/4806684 |titre=Toujours plus d’habitants dans les unités urbaines |auteur=Vianney Costemalle |date=21 octobre 2020 |site=insee.fr |consulté le= 26 mars 2021}}.</ref>."
    }
  }
}
0

You can use Regex to filter out your paragraph. That's not beautiful, but works.
For example:

((?<=== Urbanisme ==).*?(?=\\n== ))

This selects everything starting behind the headline of the Urbanism paragraph and ending before the next paragraph headline. See: https://regex101.com/r/LlGSay/1

3Fish
  • 640
  • 3
  • 18