37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
|
function scrape(doc, url) {
|
||
|
// TODO adjust the selector for the lines here
|
||
|
var lines = doc.querySelectorAll('#cntPlcPortal_grdMrc tr');
|
||
|
|
||
|
// call MARC translator
|
||
|
var translator = Zotero.loadTranslator("import");
|
||
|
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
|
||
|
translator.getTranslatorObject(function (marc) {
|
||
|
var record = new marc.record();
|
||
|
var newItem = new Zotero.Item();
|
||
|
// ignore the table headings in lines[0]
|
||
|
record.leader = text(lines[1], 'td', 4);
|
||
|
var fieldTag, indicators, fieldContent;
|
||
|
for (let line of Array.from(lines).slice(2)) {
|
||
|
// multiple lines with same fieldTag do not repeat the tag
|
||
|
// i.e. in these cases we will just take same value as before
|
||
|
if (text(line, 'td', 0).trim().length > 0) {
|
||
|
fieldTag = text(line, 'td', 0);
|
||
|
}
|
||
|
indicators = text(line, 'td', 1) + text(line, 'td', 2);
|
||
|
fieldContent = '';
|
||
|
if (text(line, 'td', 3).trim().length > 0) {
|
||
|
fieldContent = marc.subfieldDelimiter + text(line, 'td', 3);
|
||
|
}
|
||
|
fieldContent += text(line, 'td', 4);
|
||
|
|
||
|
record.addField(fieldTag, indicators, fieldContent);
|
||
|
}
|
||
|
|
||
|
record.translate(newItem);
|
||
|
|
||
|
// possibly clean newItem further here
|
||
|
|
||
|
newItem.complete();
|
||
|
});
|
||
|
}
|