Sök riksdagens api (med json)

Hämta och printa en söksträng


In [13]:
#Use with jupyter notebook and the python3 kernel. 
import urllib.request
import json

# Ange sökord inom citattecknena:
searchword = "fraktal*" # Not sure of exact syntax here, see API.

newpage = True
counter = 0
request = 'http://data.riksdagen.se/dokumentlista/?sok=' + searchword + '&doktyp=&rm=&from=&tom=&ts=&bet=&tempbet=&nr=&org=&iid=&webbtv=&talare=&exakt=&planering=&sort=datum&sortorder=asc&rapport=&utformat=json&a=s#soktraff'
print("Första sidan: " + request)

while newpage == True:
    response = urllib.request.urlopen(request)
    str_response = response.readall().decode('utf-8')
    obj = json.loads(str_response)
    json_obj = obj['dokumentlista']['dokument']
    
    for j in json_obj:
        try:
            print(str(j['titel']) + " | typ: " + str(j['typ']))
            print("\tPublicerad: " + str(j['publicerad']))
            print("\t" + str(j['undertitel']))
            print("\t" + str(j['dokument_url_text']))
            print("\t" + str(j['dokument_url_html']))
        except KeyError:
            print("\tkey error")
        try: 
            for key, value in j['filbilaga'].items():
                print("\tBilaga: " + str(value['url']))
        except AttributeError:
            print("\tno attachment")
        except TypeError:
            print("\tno attachment")

    try:
        if obj['dokumentlista']['@nasta_sida']:
            print("Nästa sida: " + str(obj['dokumentlista']['@nasta_sida']))
            request = str(obj['dokumentlista']['@nasta_sida'])
            counter += 1
    except KeyError:
        print("Klart! Det var bara " + str(counter + 1) + " sidor.")
        newpage = False
        break


Första sidan: http://data.riksdagen.se/dokumentlista/?sok=fraktal*&doktyp=&rm=&from=&tom=&ts=&bet=&tempbet=&nr=&org=&iid=&webbtv=&talare=&exakt=&planering=&sort=datum&sortorder=asc&rapport=&utformat=json&a=s#soktraff
Forskning och forskarutbildning | typ: bet
	Publicerad: 2011-04-12 13:21:28
	None
	http://data.riksdagen.se/dokument/GY01UbU12.text
	http://data.riksdagen.se/dokument/GY01UbU12.html
	Bilaga: http://data.riksdagen.se/fil/6A18CD4F-D670-416C-AE3B-F03319F41AC0
Riksdagens protokoll 2010/11:93 Torsdagen den 28 april | typ: prot
	Publicerad: 2011-04-28
	None
	http://data.riksdagen.se/dokument/GY0993.text
	http://data.riksdagen.se/dokument/GY0993.html
	no attachment
Kunskap på djupet, del 1 | typ: sou
	Publicerad: 2012-01-01
	None
	http://data.riksdagen.se/dokument/GZB356.text
	http://data.riksdagen.se/dokument/GZB356.html
	Bilaga: http://data.riksdagen.se/fil/BD899916-AD0B-48BD-886F-43719D83003A
Skydd för geografisk information | typ: sou
	Publicerad: 2013-11-04 15:33:40
	None
	http://data.riksdagen.se/dokument/H1B351.text
	http://data.riksdagen.se/dokument/H1B351.html
	Bilaga: http://data.riksdagen.se/fil/D5B0774D-AC54-49F4-93ED-DDEC026AC55D
Klart! Det var bara 1 sidor.

In [ ]: