Search code examples
pythonapimediawikiwikipediawikipedia-api

How to print mid popular summary of random post of certain topic from Wikipedia?


I want to print mid popular summary of random post of certain topic from Wikipedia using Wikipedia API but I am getting completely random topic.

I have tried this:

import requests

def get_wikipedia(topic):
    response = requests.get(f"https://en.wikipedia.org/api/rest_v1/page/summary/{topic}")
    resp = response.json()

    if response.status_code == 200:
        summary = resp['extract']
        image = resp['thumbnail']['source']

        print(summary)
        print(image)
    else:
        print("An error occurred while fetching the summary and image.")

BASE_URL = 'https://en.wikipedia.org/w/api.php'

params = {
    'format': 'json',
    'action': 'query',
    'list': 'random',
    'rnnamespace': 0,
    'rnlimit': 1,
    'rnprop': 'title',
    'rnfilterredir': 'nonredirects',
    'formatversion': 2,
    'utf8': 1,
    'utf8mb4': 1,
    'titles': 'Quantum Mechanics'
}

response = requests.get(BASE_URL, params=params)

title = response.json()['query']['random'][0]['title']

get_wikipedia(title)

And also I want to print Mid popular (the articles with page views less than 10k per month) topic. How to do it?


Solution

  • The best approach is probably using the search API with something like incategory:"Quantum mechanics" (see help) and srsort set to random.