Bramka eksportu Scopus
Moduł pobierający dane za pomocą bramki eksportu, z której korzysta interfejs webowy Scopusa. Dostęp jest przyznawany na podstawie ciasteczek (sesji) użytkownika oraz na podstawie źródłowego adresu IP.
Moduł znajduje się w katalogu fetcher/scopus_batch.
Wymagane ciasteczka
Lista wymaganych przez Scopusa ciasteczek:
AWSELB
SCOPUS_JWT
SCSessionID
scopusSessionUUID
Punkty końcowe
Nie istnieje publiczna dokumentacja punktów końcowych bramki eksportu. To, w jaki sposób interfejs webowy Scopusa korzysta z tej bramki, zostało wydedukowane na podstawie analizy ruchu sieciowego.
Wyszukiwanie publikacji po słowach kluczowych
POST https://www.scopus.com/api/documents/search/eids
{
"documentClassificationEnum": "primary",
"itemcount": 5,
"offset": 0,
"query": "TITLE-ABS-KEY(python)",
"sort": 'plf-f'
}
Maksymalna liczba identyfikatorów zwróconych w jednej odpowiedzi (parametr itemcount
) to 2000
.
Przykładowa odpowiedź:
"response": {
"numFound": 1455,
"docs": [
"2-s2.0-85216271415",
"2-s2.0-105003577803",
"2-s2.0-105003654530",
"2-s2.0-105003921873",
"2-s2.0-105003970001"
]
}
numFound
zwraca liczbę wszystkich znalezionych w bazie publikacji, a nie liczbę zwróconych wyników.
Eksport danych o publikacji
Za pomocą bramki można wyeksportować dane o maksymalnie stu publikacjach na jedno żądanie. Obsługiwane formaty to:
- CSV
- RIS
- BibTex
- tekst.
W eksporcie do CSV znajduje się najwięcej informacji, dlatego właśnie ten format jest wykorzystywany przez program.
POST https://www.scopus.com/gateway/export-service/export?batch_id=aaaaaa_0_0
{
"eids": [
"2-s2.0-85216271415",
"2-s2.0-105003577803",
"2-s2.0-105003654530",
"2-s2.0-105003921873",
"2-s2.0-105003970001"
],
"fileType": "CSV",
"fieldGroupIdentifiers": ["titles", "authors", "doi", "..."],
"keyEvent": {
"sessionId": "SC_SESSION_ID cookie value",
"transactionId": "SC_SESSION_ID:1"
"origin": "resultsList",
"zone": "resultsListHeader",
"primary": "",
"totalDocs": 1455
},
"locale": "en-US",
"hideHeaders": false
}
Parametry:
eids
- lista identyfikatorów EID publikacjifileType
- format eksportufieldGroupIdentifiers
- lista pól, które mają się pojawić w pliku CSVkeyEvent
- obiekt opisujący zdarzenie w interfejsie webowym; nie ma wpływu na eksportlocale
- językhideHeaders
- w pliku CSV: jeżelifalse
, pojawi się wiersz nagłówkowy Title, Authors, DOI itd. Jeżelitrue
, ten wiersz nie zostanie dodany.
Odświeżenie tokenu JWT
Do komunikacji z bramką potrzebny jest m.in. token JWT, który jest wysyłany jako ciasteczko (w nagłówku Cookie
)
o nazwie SCOPUS_JWT
. Jest on ważny przez około 15/20 minut. Po upływie tego czasu (mierzonego od utworzenia tokenu)
należy go odświeżyć za pomocą poniższego żądania.
Aplikacja nie sprawdza ważności tokenu. Token jest odświeżany, gdy któreś żądanie zwróci odpowiedź o kodzie statusu 403.
GET https://www.scopus.com/api/auth/refresh-scopus-jwt
Po pomyślnym odświeżeniu serwer zwróci odpowiedź o kodzie 200, z nagłówkiem Set-Cookie
zawierającym nowy token.
Jeżeli odświeżenie nie powiodło się, serwer zwróci odpowiedź z przekierowaniem (kod 3xx).
Wstępne parsowanie CSV
Po wyeksportowaniu danych moduł parsuje plik CSV za pomocą wbudowanego modułu csv
. Logika odpowiedzialna za parsowanie
znajduje się w pliku
fetcher/scopus_batch/parser.py.
Parser oczekuje całego, kompletnego pliku. Wywoła on błąd, gdy wiersz nagłówkowy nie będzie się zgadzał z oczekiwanym.