Ich würde zur Bestimmung der nötigen Informationen drei Quellen nutzen: Den RSS-Feed, die HTML-Seiten der einzelnen Artikel und die XML-Metainformationsdateien der einzelnen Artikel.
Grobes Vorgehen:
- RSS-Feed laden und per XML-Parser in einen Dokumentbaum verwandeln.
- Alle <rss:item>-Tags aus dem RSS-Dokument extrahieren.
- Aus jedem Eintrag den <rss:link>-Tag extrahieren, die entsprechende Seite laden und per HTML-Parser in einen Dokumentbaum verwandeln.
- Aus jedem der HTML-Dokumente den <link rel="metadata">-Tag extrahieren, die entsprechende XML-Datei laden und per XML-Parser in einen Dokumentbaum verwandeln.
- Die gewünschten Informationen über jeden Artikel aus Metadatendokument, RSS-Dokument und HTML-Dokument (in dieser Prioritätsreihenfolge) zusammensuchen.
Mögliche Quellen für die gewünschten Informationen:
-
Quotewer die Autoren sind (und dabei jeden einzeln aufzählen)
- <creator>-Tags des Metadatendokumentes
- <description>-Tag des RSS-Eintrages, Inhalt ist aber kompliziert mit regulären Ausdrücken zu parsen, da sehr irregulär ;-)
-
Quotewie der Artikel heißt
- <title>-Tag des Metadatendokumentes
- <title>-Tag des RSS-Eintrages
- <title>-Tag des HTML-Dokumentes
-
Quotewelche Art von Artikel es ist (Editorial, Report, Opinion, etc.)
- <type resource-type="work">-Tag des Metadatendokumentes
- <description>-Tag des RSS-Eintrages, erstes Wort ist leicht per regulärem Ausdruck extrahierbar
-
Quotewelche DOI der Artikel hat
- <identifier uri-type="DOI">-Tag des Metadatendokumentes
- <meta name="DOI">-Tag des HTML-Dokumentes
-
Quotewenn möglich das Abstract des Artikels ausspucken
- Textinhalt des ersten Absatzes nach einer Überschrift mit dem Inhalt "Abstract" im HTML-Dokument.
-
Quotewie die Zeitschrift heißt
- <serial-name>-Tag des Metadatendokumentes
- <meta name="description">-Tag des HTML-Dokumentes, könnte aber auch falsche Informationen liefern
- Inhalt der ersten Überschrift im HTML-Dokument, könnte aber auch falsche Informationen liefern
-
Quoteum welche Ausgabe der Zeitschrift es sich handelt
- <volume>-Tag des Metadatendokumentes
-
Quoteum welche Nummer der Zeitschrift es sich handelt
- <issue>-Tag des Metadatendokumentes
-
Quotein welchem Jahr diese Ausgabe erschienen ist
- <date date-type="publication">-Tag des Metadatendokumentes, Jahreszahl lässt sich leicht mit einem regulären Ausdruck extrahieren
-
Quotewelcher Link zu dieser Ausgabe führt
Die URL des Artikels kann aus dem
- <identifier uri-type="URL">-Tag des Metadatendokumentes oder
- <link>-Tag des RSS-Eintrages
gewonnen werden. Um einen Link zur entsprechenden Ausgabe der Zeitschrift zu erzeugen, könnte man mit etwas Glück einfach die letzten Pfadelemente der URL abschneiden — sicher ist diese Methode aber nicht. -
Quotewelche ISSN diese Ausgabe hat
- <issn>-Tag des Metadatendokumentes
Da hier komplizierte Dokumentbäume im Spiel sind, würde ich alle Datenextraktionsschritte mit Hilfe von XPath erledigen, die nötigen Ausdrücke sind, im Gegensatz zu funktional ähnlichen regulären Ausdrücken, allesamt kaum eine Zeile lang! Für die Nachbearbeitung einzelner Taginhalte sind reguläre Ausdrücke aber das Mittel der Wahl :-)
When C++ is your hammer, every problem looks like your thumb.