Skip to content
Snippets Groups Projects
Verified Commit 66caed11 authored by saml's avatar saml :game_die: Committed by GitLab UZH
Browse files

Delete _1_einfache_suchabfrage.ipynb

parent 50963585
No related branches found
No related tags found
No related merge requests found
Pipeline #399531 passed
%% Cell type:markdown id: tags:
<span style="color:blue">**Projektversion: 1.0.1 - letzte Aktualisierung: 11. Oktober 2023**</span>
%% Cell type:markdown id: tags:
# Einfache Suche im SLSP-Bibliothekskatalog der *Zentralbibliothek Zürich*
%% Cell type:markdown id: tags:
Zürich | 5. Mai 2023 - Linda Samsinger
%% Cell type:markdown id: tags:
Die Zentralbibliothek Zürich ist eine der grössten Bibliotheken in der Schweiz und stellt eine breite Palette von Sammlungen, darunter Bücher, Zeitschriften, Audio- und Videomaterialien zur Verfügung. Die ZB Zürich hat Zugriff auf den **SLSP-Bibliothekskatalog, welcher Informationen zu allen in Schweizer Bibliotheken verfügbaren Medien enthält**.
Dieses Jupyter Notebook beinhaltet Textanweisungen und Code-Blöcke zur fachkundigen **Abfrage des SLSP-Katalogs mit Suchbegriffen** und dem **Export des Suchresultats** als Excel, CSV oder JSON-Datei. Es erlaubt Ihnen, gezielt nach Medien zu suchen, welche Ihren spezifischen Interessen und Anforderungen entsprechen.
Dank diesem Tutorial können **bis zu 10'000 Suchresultate** heruntergeladen werden im Vergleich zur Suchabfrage auf der [Swisscovery-Webseite der UB und ZB Zürich](https://uzb.swisscovery.slsp.ch/discovery/search?vid=41SLSP_UZB:UZB), die es nur erlaubt maximal 50 Suchresultate zu exportieren. Zudem liegen die Suchresultate flach strukturiert und auf einer einzigen Seite übersichtlich vor.
%% Cell type:markdown id: tags:
Über dieses Jupyter Notebook werden nach **Eingabe von Suchbegriffen** im schweizweiten Netzwerk des SLSP-Bibliothekskatalogs **alle bibliographischen Felder** nach entsprechenden Medien durchsucht. In der **Ausgabe enthalten sind die folgenden Felder**: Titel, Autor, Verlag, Publikationsort, Erscheinungsdatum, Auflage, physische Beschreibung, Sprache, Land, geographisches Thema, Form/Genre, Ressourcentyp, Thema, Zusammenfassung, Epoche, MMS-ID, ISBN, Swisscovery-Link und der Inhaltsverzeichnis-Link, falls vorhanden.
%% Cell type:markdown id: tags:
## Projektidee
%% Cell type:markdown id: tags:
### Mit diesem Notebook können Sie...
%% Cell type:markdown id: tags:
- **schweizweite Katalogdaten als Grundlage für die akademische Forschungsarbeit beziehen**
- **Medien der Bibliotheken über Swisscovery-Links einfach bestellen und ausleihen**
Für eine weitere Auflistung von Vorteilen für den Benutzer siehe Sektion [Nachnutzung der Ergebnisse](#nachnutzung) weiter unten.
%% Cell type:markdown id: tags:
### Ziel des Notebooks
%% Cell type:markdown id: tags:
![resultat](screenshot_suchresultat.png)
%% Cell type:markdown id: tags:
![download](screenshot_download.png)
%% Cell type:markdown id: tags:
### Quelle: Der SLSP-Bibliothekskatalog
%% Cell type:markdown id: tags:
Die Suchabfrage über den ganzen **SLSP-Bibliothekskatalog** von **über 25 Millionen Einträgen** schweizweit ist über die [Search/Retrieve-URL (SRU)-Schnittstelle (Version 1.2)](https://data.zb.uzh.ch/map/books/data-map-der-zentralbibliothek-zurich/page/alma-sru) der ZB Zürich verfügbar. Über den SLSP-Bibliothekskatalog wird die ganze Netzwerkzone abgefragt. Der SLSP-Bibliothekskatalog, der mithilfe dieses Jupyter Notebooks abgefragt wird, ist Teil des allgemein genutzten [Swisscovery-Katalogs](https://uzb.swisscovery.slsp.ch/discovery/search?vid=41SLSP_UZB:UZB), welcher allerdings über noch mehr Datenzuflüsse verfügt. Deshalb können die Ergebnisse zwischen dem SLSP-Katalog und dem Swisscovery-Katalog voneinander abweichen.
- Datenquelle: https://data.zb.uzh.ch/map/books/data-map-der-zentralbibliothek-zurich/page/alma-sru
- Datenformat: [MARCXML](https://www.loc.gov/standards/marcxml//)
%% Cell type:markdown id: tags:
<a id='konfiguration_der_suchabfrage'></a>
## Konfiguration der Suchabfrage
%% Cell type:markdown id: tags:
### Ausführen des Jupyter Notebook Masters
%% Cell type:markdown id: tags:
Im Notebook Master sind alle Abhängigkeiten dieses Jupyter Notebooks aufgeführt. Diese werden mit der folgenden Code-Zeile geladen:
%% Cell type:code id: tags:
``` python
import piplite
import micropip
await piplite.install('nbformat')
await piplite.install('numpy')
await piplite.install('pandas')
await piplite.install('xmltodict')
await piplite.install('pymarc')
await piplite.install(["ipywidgets==8.0.6"])
await piplite.install('openpyxl')
await piplite.install('unidecode')
await piplite.install('tqdm')
```
%% Cell type:code id: tags:
``` python
# Standardmodule
import os
import re
import datetime
import warnings
import functools as ft
import asyncio
import urllib.parse
import json
from io import BytesIO
from pyodide.http import open_url, pyfetch
from pathlib import Path
# Module von Drittanbietern
from IPython.display import display, HTML, Javascript
import ipywidgets as widgets
from ipywidgets import (
Layout,
Text,
Box,
Button,
Output,
IntRangeSlider,
Dropdown,
RadioButtons,
Label
)
import pymarc
import xmltodict
from lxml import etree
from bs4 import BeautifulSoup as soup
from tqdm import tqdm
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from gensim.models import Word2Vec
from sklearn.decomposition import PCA
from unidecode import unidecode
```
%% Cell type:code id: tags:
``` python
# lokaler Import
%run code/_0_notebook_master.ipynb
```
%% Cell type:markdown id: tags:
Zusätzlich zu den Python-Modulen braucht es noch folgende Dateien im Jupyter Notebook-Verzeichnis:
- `screenshot_suchresultat.png`
- `screenshot_download.png`
- `lang_dict.xlsx`
- `country_dict.xlsx`
%% Cell type:markdown id: tags:
### Eingabe der Suchkriterien
%% Cell type:markdown id: tags:
> Führen Sie den nachstehenden Code-Block aus: "Ctrl" + "Enter" (oder Klick auf das Run-Stopp-Zeichen des Code-Blocks).
%% Cell type:code id: tags:
``` python
# Widget "Suchbox" anzeigen
form_item_layout = Layout(
display="flex",
flex_flow="row",
justify_content="space-around",
width="50%",
grid_area="sidebar",
align_items="center",
)
text = widgets.Text(
placeholder='z.B. nach "Geschichte alt* Ägypten" im SLSP-Katalog',
description="Stichwort: ",
disabled=False,
layout=form_item_layout,
)
display(text)
```
%% Output
%% Cell type:code id: tags:
``` python
print("Ihr Suchbegriff:\033[1m", text.value, "\033[0m")
title_name = text.value.replace(" ", "_")
```
%% Output
Ihr Suchbegriff: Buchweizen 
%% Cell type:markdown id: tags:
**Geben Sie Ihren Suchbegriff in die Suchbox ein.** Der Suchbegriff wird mit der "Enter"-Taste gespeichert.
<div class="alert alert-block alert-info">
<b>Tipp:</b> Ein möglicher Suchbegriff für den SLSP-Bibliothekskatalog ist der Titel eines Buches, der für Ihre Forschung relevant sein könnte. Ein weiterer möglicher Suchbegriff wäre der Autor eines Buches oder der Artikel, den Sie benötigen. Andere mögliche Suchbegriffe sind Themenbegriffe oder Schlagworte, die mit Ihrem Forschungsinteresse zuammenhängen, oder Erscheinungsjahr und Sprache. Basierend auf dem Suchbegriff wird eine einfache Suchabfrage gestartet, die alle bibliografischen Felder durchsucht. </div>
%% Cell type:markdown id: tags:
> **Klick auf "Run All Below"**: Ab dieser Konfigurationsstelle kann der ganze verbleibende Code in einem Zug durchgespielt werden. Klicken Sie dazu auf den darunter stehenden Code-Block, dann im Navigationsmenu auf "Cell" und dann auf "Run All Below", um alle Code-Blöcke auf einmal auszuführen. Die Ausführung kann je nach Anzahl der gefundenen Ergebnisse unterschiedlich lang dauern.
%% Cell type:markdown id: tags:
<a id='durchführung_der_suchabfrage'></a>
## Durchführung der Suchabfrage
%% Cell type:markdown id: tags:
### Öffnen der Suchseite
%% Cell type:code id: tags:
``` python
# Anzahl Ergebnisse aus dem Online-Katalog herunterladen
button = widgets.Button(description="Suchabfrage starten")
output = widgets.Output()
display(button, output)
BASE_URL = ""
XML = ""
NO_RECORDS = 0
def on_button_clicked(button_in):
"""Function executes when button is clicked."""
with output:
suchseite_oeffnen(text)
button.on_click(on_button_clicked)
```
%% Output
%% Cell type:markdown id: tags:
### Ausführung der Suche
%% Cell type:code id: tags:
``` python
# Ergebnisse aus dem Online-Katalog herunterladen
button = widgets.Button(description="Ergebnisse laden")
output = widgets.Output()
display(button, output)
RESULTS_DICT = {}
def on_button_clicked2(button_in2):
"""Function executes when button is clicked."""
with output:
suchseite_ausfuehren()
button.on_click(on_button_clicked2)
```
%% Output
%% Cell type:markdown id: tags:
**Warten Sie bis der Ladebalken vollständig geladen hat. Achtung: Es werden nur bis zu 10'000 Ergebnisse heruntergeladen.** <br>
<div class="alert alert-block alert-danger">
<b>Warnung:</b> Falls das Herunterladen wegen Verbindungsproblemen unterbrochen wurde, so kann man den Code unterhalb auskommentieren und im oberen Code-Block die Variable `timeout_page` mit dem Wert der Ausgabe des Code-Blocks unten ersetzen, bevor man den oberen Code-Block erneut ausführt. So kann man die Suche weiterführen ohne von vorn beginnen zu müssen.
</div>
%% Cell type:code id: tags:
``` python
# print(nextpage)
```
%% Cell type:markdown id: tags:
<a id='strukturierung_des_suchresultats'></a>
## Strukturierung des Suchresultats
%% Cell type:markdown id: tags:
Die Suchergebnisse werden tabellarisch mit den Ausgabefeldern als Spaltenname dargestellt. Die Suchergebnisse enthalten dadurch detaillierte Informationen zu den einzelnen Werken. Dies erleichtert es, eine fundierte Entscheidung über die Medien zu treffen.
%% Cell type:code id: tags:
``` python
# Suchergebnis als Tabelle
df_suchresultat = pd.DataFrame.from_dict(RESULTS_DICT, orient="index")
# Spaltennamen
df_suchresultat.columns = DF_COLUMNS
# Reihenindex
df_suchresultat.index.name = "ID"
df_suchresultat.index += 1
df_suchresultat
```
%% Output
Titel Autor \
Vorname Nachname
ID
1 'Polygonaceae', 34 John Brandbyge
2 Aizoaceae, Cucurbitaceae, Eriocaulaceae ..
3 7. Alpenländisches Expertenforum zum Thema Bes...
4 Abnehmen mit der Sirtfood-Diät :, Den Stoffwe... Doris. Muliar
5 Adhäsion von Porphyromonas gingivalis: Antiadh... Gesine Löhr
.. ... ... ...
222 XXL Sodbrennen Kochbuch :, Mit 200+ leckeren R... Katrin. Schieber
223 Die Züchtung von Kartoffel, Erdbirne, Lein, Ha... Carl Fruwirth
224 Zufällig vegan, 100 Rezepte für die regionale ... Marta Dymek
225 Zugehörigkeiten und Esskultur, Alltagspraxen ... Anna Flack
226 Zusammensetzung der Pseudogetreidearten Amaran...
Weitere Autoren Editoren Verlag \
ID
1 None None Berlings
2 None None
3 None None Bundesanstalt für Alpenländische Landwirtschaft
4 None None Riva
5 None None
.. ... ... ...
222 None None tredition Verlag
223 None None Parey
224 None None smarticular Verlag
225 None None None
226
Publikationsort Erscheinungsdatum Auflage \
ID
1 Arlöv 1989 None
2 None None
3 Gumpenstein 2001 None
4 München :;München 2020 None
5 Münster 2010 None
.. ... ... ...
222 Ahrensburg :;Ahrensburg 2023 None
223 Berlin 1924 5. gänzlich umgearb. Aufl.
224 Berlin 2019 None
225 Bielefeld 2020 1st ed.
226 Stuttgart 1997 None
Physische Beschreibung ... Geographisches Thema \
...
ID ...
1 62 p. ... Équateur;Ecuador;Philippinen
2 420 S. ... Sri Lanka
3 81 S. ... None
4 1 online resource (146 pages) ... None
5 269 S. ... None
.. ... ... ...
222 1 online resource (310 pages) ... None
223 1 vol. ... None
224 286 Seiten ... None
225 1 online resource (500 p.) ... None
226 134 S. ... None
Form/Genre Ressourcentyp \
ID
1 None Buch - physisch
2 None Buch - physisch
3 Konferenzschrift Buch - physisch
4 None Buch - elektronisch
5 Hochschulschrift Buch - physisch
.. ... ...
222 None Buch - elektronisch
223 None Buch - physisch
224 Kochbuch Buch - physisch
225 None Buch - elektronisch
226 Hochschulschrift Buch - physisch
Thema \
ID
1 Polygonaceae [Taxonomie] Knöterichgewächse Sys...
2 Pflanzen Botany AIZOACEAE (BOTANIK) CUCURBITAC...
3 GRASLAND + GRÜNLAND (FUTTERBAU) GRÜNLAND-WIR...
4 None
5 ANTIMIKROBIELLE ARZNEIMITTEL (PHARMAZIE) CYTOT...
.. ...
222 None
223 None
224 Vegetarische Küche Vegane Kost Veganer
225 Russlanddeutsche; Russland; Alltagskultur; Ide...
226 ALTERNATIVE KÖRNERFRÜCHTE + GETREIDEARTEN (P...
Zusammenfassung Epoche \
ID
1 None
2 None
3 None
4 None
5 None
.. ... ...
222 None
223 None Neuzeit
224 None Gegenwart
225 In der sich zunehmend diversifizierenden deuts...
226 None None
MMS-ID ISBN \
ID
1 991054745059705501 8788702405
2 991071750299705501 9054102691
3 991147798699705501 3901980474
4 991170644874605501 3-7453-1144-2
5 991081238699705501 None
.. ... ...
222 991171245407505501 3-347-98746-2
223 991146999089705501 None
224 991132489089705501 9783946658375;9783946658368
225 991170585711605501 3-8394-5327-5
226 991153222929705501 None
Swisscovery-Link \
ID
1 https://uzb.swisscovery.slsp.ch/permalink/41SL...
2 https://uzb.swisscovery.slsp.ch/permalink/41SL...
3 https://uzb.swisscovery.slsp.ch/permalink/41SL...
4 https://uzb.swisscovery.slsp.ch/permalink/41SL...
5 https://uzb.swisscovery.slsp.ch/permalink/41SL...
.. ...
222 https://uzb.swisscovery.slsp.ch/permalink/41SL...
223 https://uzb.swisscovery.slsp.ch/permalink/41SL...
224 https://uzb.swisscovery.slsp.ch/permalink/41SL...
225 https://uzb.swisscovery.slsp.ch/permalink/41SL...
226 https://uzb.swisscovery.slsp.ch/permalink/41SL...
Inhaltsverzeichnis-Link
ID
1 None
2 None
3 None
4 None
5 https://toc.library.ethz.ch/objects/pdf/e16_00...
.. ...
222 None
223 None
224 https://toc.library.ethz.ch/objects/pdf03/z01_...
225 None
226 None
[226 rows x 22 columns]
%% Cell type:markdown id: tags:
<a id='exportieren_des_suchresultats'></a>
## Exportieren des Suchresultats
%% Cell type:markdown id: tags:
Das Suchresultat kann als Excel, CSV oder JSON exportiert werden.
%% Cell type:code id: tags:
``` python
df_suchresultat.to_excel(f"ZB_Suchresultat_{title_name}.xlsx", sheet_name="Resultat")
```
%% Cell type:code id: tags:
``` python
# df_suchresultat.to_csv(f"ZB_Suchresultat_{title_name}.csv", index=False, sep=';')
```
%% Cell type:code id: tags:
``` python
# df_suchresultat.to_json(f"ZB_Suchresultat_{title_name}.json", orient="index", force_ascii=False)
```
%% Cell type:markdown id: tags:
**Jetzt kann die Ergebnisdatei im Verzeichnis dieses Jupyter Notebooks geöffnet werden.**
%% Cell type:markdown id: tags:
<div class="alert alert-block alert-info">
<b>Tipp:</b> Sie können die Ergebnisse weiter filtern z.B. nach Sprache, Autor, Thema oder anderen Kriterien. Die Suchergebnisse können auch sortiert werden, z.B. alphabetisch nach Autor oder nach Erscheinungsjahr. Dies erhöht die Chance, dass die gewünschten Materialien gefunden werden. Klicken Sie auf den Swisscovery-Link, um weitere Details zu sehen wie Bibliotheksstandort, Signatur und Verfügbarkeit des Mediums. </div>
%% Cell type:markdown id: tags:
<a id='nachnutzung'></a>
### Nachnutzung der Ergebnisse
%% Cell type:markdown id: tags:
- **Erstellung einer Bibliographie (= Liste von Referenzen)**
Sie möchten alle Referenzdaten der Bücher mit einem bestimmten Suchbegriff (Autor, Titel, Verlag, Publikationsort, Erscheinungsdatum) herunterladen, z.B. für die Erstellung einer Bibliographie einer (akademischen) **Forschungsarbeit** oder zur Literaturauswertung zu Beginn einer Forschungsarbeit. Dazu braucht es Rohdaten, um diese einem gewissen Zitationsstil anpassen zu können. Auch Literaturverwaltungssysteme wie Citavi, Endnote, Mendeley und Zotero können mit den Daten eingepflegt werden.
- **Zugriff auf Swisscovery-Links für Bestellungen**
In der Ergebnisdatei findet sich mitunter eine Spalte "Swisscovery-Link". Der Nutzer kann die [Swisscovery-Links](https://uzb.swisscovery.slsp.ch/discovery/search?vid=41SLSP_UZB:UZB) nutzen, um **Bücher vorbestellen bzw. reservieren** zu können. Dank den Swisscovery-Links können die Medien auf der Hauptseite der Bibliothek und weitere dazugehörige Informationen ausfindig gemacht werden; deren Standort (Bibliothek, Geschoss, Magazin), Signatur und Ausleihinformationen sind auf Swisscovery verfügbar. Die Swisscovery-Seite bietet auch noch weitere Filtermöglichkeiten an zur Einschränkung der Suche.
- **Überblick über alle Zusammenfassungen**
In der Ergebnisdatei gibt es eine Spalte, die "Zusammenfassung" heisst. Der Nutzer kann die Zusammenfassungen/Abstracts eines Suchbegriffs dadurch einsehen. Eine Zusammenfassung bietet einen Überblick über das entsprechende Buch. Sie kann dazu dienen, zu verstehen, ob das Buch wirklich zum **Forschungsthema** passt, oder ob man es verwerfen kann.
- **Inhaltsverzeichnisse als PDF-Dateien**
Die Ergebnisdatei beinhaltet die Spalte "Inhaltsverzeichnis-Link". Der Nutzer kann dank den Links alle Inhaltsverzeichnisse als PDF herunterladen, damit man bei mehreren Autoren eines Buches z.B. die **Autorenliste** im Inhaltsverzeichnis überblicken kann. Mit der Spalte "Inhaltsverzeichnis-Links" können die Links zu den PDF-Inhaltsverzeichnissen mit ein paar Zeilen Code direkt lokal auf den Computer heruntergeladen werden. Die Dateinamen der PDF-Inhaltsverzeichnisse sind nach Index, Nachname des Autors, Erscheinungsjahr und abgekürzter Titel des Medium benannt.
- **Meta-Statistiken**
Der Nutzer kann die detaillierten Angaben in der Ergebnisdatei als Suchresultat des Bibliothekskatalogs dazu nutzen, um damit **statistische Analysen** der bibliographischen (Meta-)Daten durchzuführen. Z.B. kann nach Anzahl, Auflage, Sprache, Genre, Epoche und Thema analytisch erhoben werden. Man kann die Suchresultate mit geeigneten statistischen Diagrammen visuell anschaulich auswerten wie zum Beispiel Balken-, Kuchen- oder Liniendiagramme.
- **Einbettung in Websites oder Web-Apps**
Der Nutzer möchte das Suchresultat im JSON-Format in Websites oder Web-Apps einbetten.
%% Cell type:markdown id: tags:
Mit den oben vorgeführten Schritten dieses Notebooks können Sie eine einfache Suchabfrage des SLSP-Bibliothekskatalogs durchführen, um den Bibliothekskatalog optimal zu nutzen und Medien zu finden, die Ihrem spezifischen Forschungsinteresse entsprechen. Dieses Jupyter Notebook bietet dazu eine optimierte und effiziente Möglichkeit, nach Medien zu suchen, welche die individuellen Anforderungen erfüllen.
*Für weitere Fragen und Feedback wenden Sie sich bitte an Linda Samsinger, Data Librarian an der Zentralbibliothek Zürich, unter linda.samsinger@zb.uzh.ch.*
%% Cell type:markdown id: tags:
**Zentralbibliothek Zürch** | Kantons-, Stadt- und Universitätsbibliothek
Folgen Sie uns auf sozialen Medien:
<nav>
<a href="https://www.facebook.com/Zentralbibliothek.Zuerich/?locale=de_DE">Facebook</a> |
<a href="https://twitter.com/zbzuerich?lang=de">Twitter</a> |
<a href="https://www.youtube.com/channel/UCVLFfTBvY89xBI_rEBgmdvQ">YouTube</a> |
<a href="https://www.instagram.com/zentralbibliothek_zuerich/?hl=de">Instagram</a> |
<a href="https://ch.linkedin.com/company/zentralbibliothek-z%C3%BCrich">LinkedIn</a>
</nav>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment