Thread 3 Fragen: Trefferliste umstrukturieren, mit gefunden Links weiterarbeiten + wie kann ich nur Teile eines Treffers anzeigen? (47 answers)
Opened by vitopetre at 2010-04-11 23:27

vitopetre
 2010-04-11 23:27
#135882 #135882
User since
2010-02-14
25 Artikel
BenutzerIn
[default_avatar]
Hallo liebe Perl-Forum Rocker,

hier ist wieder vito der nervige kleine Anfänger.

Ich hab mich jetzt durch Teile des Eulen-Buchs und des Buches "Beginning Perl" von James Lee durchgearbeitet, aber irgendwie hab ich immer noch große Probleme, vor alllem, weil ich kaum noch Zeit habe, mein Programm fertig zu stellen und ich auch deswegen viele Dinge in diesen Büchern nur überfliegen kann. Ich muss gestehen, dass ich meine Aufgabe echt unterschätzt habe und jetzt merke, dass man sich sehr gewissenhaft und langfristig in Perl einarbeiten muss; was mich aber nicht davon abhalten wird, dies nachdem ich mit dieser Aufgabe fertig bin auch gewissenhaft und ohne Zeitdruck zu tun.


Jetzt zu meinen Fragen:

Folgendes Programm ist ein Teil des Programmes, dass ich schreibe:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use LWP::Simple; 
$seite=get("http://www.dlib.org/rss/dlib.rss");

$seite=~ s/&.+?;/_/g; 
#entfernt alle mit &-beginnenden HTML-Sonderzeichen und ersetzt diese durch einen Unterstrich ( _ )

$stelle=0;
$anfang=index($seite,"</channel>",$stelle); 
#hier soll das Ausschneiden anfangen

while ($anfang>=0) {
      $ende=index($seite,"</rdf:RDF>",$anfang);
          $item=substr($seite,$anfang,$ende-$anfang);

          my @article = ($item =~ m/<title>(.+)<\/title>/g);
          foreach my $x (@article) {print "TI:$x\n\n " };
          
          my @link = ($item =~ m/<link>(.+)<\/link>/g);
          foreach my $x (@link) {print "LI:$x\n\n " };
          
          my @description = ($item =~ m/<description>(.+) by/g);
          foreach my $x (@description) {print "PT:$x\n\n " };
                 
          $anfang=index($seite,"<item>",$anfang+1); 
          #Schleife um das ganze für den ganzen Quelltext zu machen!
}


Jetzt habe ich dazu folgende Fragen:

1. Als Resultat des Programmes bekomme ich eine Liste die so aussieht:

TI:An Introduction to the March/April Issue
TI:Realizing and Maintaining Aggregative Digital Library Systems: D-NET Software Toolkit and OAIster System
TI:Using Omeka to Build Digital Collections: The METRO Case Study
TI:Museum Data Exchange: Learning How to Share
TI:Crowdsourcing: How and Why Should Libraries Do It?
TI:An Approach to Open Access Author Payment
TI:Berlin 7: Open Access Reaching Diverse Communities
TI:In Brief: HumBox
TI:In Brief: CACAO Project Overview
TI:In Brief: Digital Classicist Summer Seminar Series 2010
TI:In Brief: The Wellcome Arabic Manuscript Cataloguing Partnership
TI:In Brief: Frontiers of Science - Science Fact in a Comic Strip

LI:http://dx.doi.org/10.1045/march2010-editorial
LI:http://dx.doi.org/10.1045/march2010-manghi
LI:http://dx.doi.org/10.1045/march2010-kucsma
LI:http://dx.doi.org/10.1045/march2010-waibel
LI:http://dx.doi.org/10.1045/march2010-holley
LI:http://dx.doi.org/10.1045/march2010-king
LI:http://dx.doi.org/10.1045/march2010-giglia
LI:http://www.dlib.org/dlib/march10/03inbrief.html#DICKENS
LI:http://www.dlib.org/dlib/march10/03inbrief.html#BOSCA
LI:http://www.dlib.org/dlib/march10/03inbrief.html#MAHONY
LI:http://www.dlib.org/dlib/march10/03inbrief.html#HENSHAW
LI:http://www.dlib.org/dlib/march10/03inbrief.html#COLEMAN

PT:Editorial
PT:Article
PT:Article
PT:Article
PT:Opinion
PT:Conference Report


Jetzt will ich aber diese Treffer nicht so angeordnet haben, sondern so, dass die Angaben die im Quelltext zusammengehören auch hier zueinander geordnet werden, also z. B.:


TI:An Introduction to the March/April Issue
LI:http://dx.doi.org/10.1045/march2010-editorial
PT:Editorial

TI:Realizing and Maintaining Aggregative Digital Library Systems: D-NET Software Toolkit and OAIster System
LI:http://dx.doi.org/10.1045/march2010-manghi
PT:Article

und so weiter


Außerdem will ich nur diejenigen Treffer, die auch für ALLE Kategorien einen Treffer liefern, habt ihr eine Idee, wie man das machen kann?


2. Muss ich dem Perl Programm klar machen, dass es zu den in der Liste angegebenen Links gehen soll, um dort weitere Informationen zu holen, wie sagt man das auf Perl?


3. Muss ich nicht nur die Art des Artikels angeben (PT:Article, Report, etc.), sondern auch den Autor bzw. die Autoren, die noch in der gleichen Klammer <description>(.+) <\/description> stehen, wie sage ich Perl, dass es mir zuerst nur den Teil des Treffers bis zum "by" als "PT: ..." anzeigen soll und dann die Trefer nach dem "by" als "AU: ..., AU: ..., etc."?

So wie ich das ganze jetzt geschrieben habe funktionierts, aber nur für "PT:":

Code (perl): (dl )
1
2
my @description = ($item =~ m/<description>(.+) by/g);
          foreach my $x (@description) {print "PT:$x\n\n " };


So kriege ich zwar alles, aber ich weiß eben nicht, wie bzw. ob ich diesen Treffer dann noch weiter verarbeiten kann:

Code (perl): (dl )
1
2
my @description = ($item =~ m/<description>(.+) <\/description>/g);
          foreach my $x (@description) {print "PT:$x\n\n " };



So, dass sind jetzt wieder viele doofe Fragen, ich hoffe, dass ihr mir die eine oder andere davon beantworten könnt und ihr nicht allzusehr von mir genervt seid.

Vielen Dank

Vito

View full thread 3 Fragen: Trefferliste umstrukturieren, mit gefunden Links weiterarbeiten + wie kann ich nur Teile eines Treffers anzeigen?