Schrift
[thread]10633[/thread]

HTML file nach infos duchsuchen od. parsen?? (Seite 2)

Leser: 3


<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
renee
 2007-11-02 19:15
#101702 #101702
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Jetzt wäre es noch gut, wenn Du eine Beispielausgabe zeigen würdest... Was soll am Ende rauskommen?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2007-11-03 17:29
#101776 #101776
gut, also falls ein tag Met enthält dann
die Ausgabe soll die TT-tag s und noch die Ladung; also die (2+) in diesem Bsp, und die FinniganScannumber (die wäre dann die 3539) enthalrten,
xxx XXX xxx xxxx xxxx xxx ...
damit kann ich noch weiter arbeiten,also dann in ein Excel datei exportieren und damit mathe opertionen führen.
mit der FinniganScannumber werde ich dann mittels ein anderer Programm weiter arbeiten.
was ich weiss jetzt ich kann auf look_up verzichten, da es schon in dem Block bin,, und mittel vielleicht split() oder Regexp... od.so die infos extrahiere.
mal gucken.
hoffe bin klar???
danke im voraus.
renee
 2007-11-03 22:57
#101806 #101806
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zeig doch mal ein Stück HTML und markier das was am Ende rauskommen soll!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2007-11-04 04:45
#101813 #101813
so das ist nochmal mein html Block,natürlich sind mehrere davon aber gleich strukturiert, ist ein bis komplitziert, abe ich arbeite auch daran.:-))
[html]
<TR>
<TD align=right><INPUT type=checkbox CHECKED
value="1060.542634 from(531.278593,2+) title(Elution%20from%3a%20777%2e777%20to%20777%2e777%20period%3a%20dimer_02%2eraw%20experiment%3a%201%20cycles%3a%201%20precIntensity%3a%2080142%2e0%20FinneganScanNumber%3a%203539) query(5104)"
name=QUE></TD>
<TD align=right><TT><A
onmouseover="statusString = h1_q5104; if (!browser_EXCLUDE) activateEl('Q5104', event)"
onmouseout=clearEl()
href="http:///.."
target=_blank>5104</A> </TT></TD>
<TD align=right><TT><FONT
color=#ff0000><B>531.27859 </B></FONT></TT></TD>
<TD align=right><TT><FONT
color=#ff0000><B>1060.54263 </B></FONT></TT></TD>
<TD align=right><TT><FONT
color=#ff0000><B>1060.54001 </B></FONT></TT></TD>
<TD noWrap align=right><TT><FONT
color=#ff0000><B>0.00263 </B></FONT></TT></TD>
<TD align=right><TT><FONT
color=#ff0000><B>0 </B></FONT></TT></TD>
<TD noWrap align=right><TT><FONT
color=#ff0000><B>(19) </B></FONT></TT></TD>
<TD noWrap align=right><TT><FONT
color=#ff0000><B>2.4 </B></FONT></TT></TD>
<TD align=right><TT><FONT
color=#ff0000><B>1 </B></FONT></TT></TD>
<TD noWrap><TT><FONT color=#ff0000><B>R.TLLEGEESR.M + di-MetCarboxylation
27: (R)</B></FONT></TT></TD></TR>
[/html]

Ausgabe soll in etwa so aussehen:

Ladung : 2+ (das fischt man aus dem value attribute im from(..)oben vielleicht mit split raus)
FinneganScanNumber : 3539 (das auch aus dem Value attribute oben in title(..) )
Mass observed : 531.27859 (aus dem zweiten <TT> tag)
Mass expt : 1060.54263 (aus dem dritten <TT> tag)
Mass calc : 1060.54001 (aus vierten <TT> tag)
Sequence : R.TLLEGEESR.M (aus dem letzten <TT>tag )
Modification : di-MetCarboxylation ( letzten <TT>tag auch)
---------------------------
..usw
---------------------------
ich hoffe ich war kla
grezziii:-)
renee
 2007-11-04 13:09
#101817 #101817
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja,jetzt ist es klar und so lässt sich auch viel besser arbeiten:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/perl

use strict;
use warnings;
use Web::Scraper;

my $content = do{ local $/; <DATA> };
my $parser  = scraper{
    process 'tr', 'elements[]' => scraper{
        process 'input[type="checkbox"]', 'Ladung' => '@value';
        process 'tt', 'infos[]' => 'TEXT';
    };
};

my $result = $parser->scrape( $content );

for my $element ( @{ $result->{elements} } ){
    my ($ladung) = $element->{Ladung} =~ m!,(.*?)\)!;
    my ($scan)   = $element->{Ladung} =~ m!FinneganScanNumber%3a%20(\d+)!;
    my ($massobs,$massexp,$masscalc,$info)  = @{ $element->{infos} }[1,2,3,-1];
    my ($seq,$mod) = split /\s*\+\s*/, $info;
    
    print qq~
Ladung:          $ladung
FinneScanNumber: $scan
Mass Observed:   $massobs
Mass exp:        $massexp
Mass calc:       $masscalc
Sequence:        $seq
Modification:    $mod

~;
}


__DATA__
<TR>
<TD align=right><INPUT type=checkbox CHECKED 
value="1060.542634 from(531.278593,2+) title(Elution%20from%3a%20777%2e777%20to%20777%2e777%20period%3a%20dimer_02%2eraw%20experiment%3a%201%20cycles%3a%201%20precIntensity%3a%2080142%2e0%20FinneganScanNumber%3a%203539) query(5104)" 
name=QUE></TD>
<TD align=right><TT><A 
onmouseover="statusString = h1_q5104; if (!browser_EXCLUDE) activateEl('Q5104', event)" 
onmouseout=clearEl() 
 href="http://test.de" 
target=_blank>5104</A>  </TT></TD>
<TD align=right><TT><FONT 
color=#ff0000><B>531.27859  </B></FONT></TT></TD>
<TD align=right><TT><FONT 
color=#ff0000><B>1060.54263  </B></FONT></TT></TD>
<TD align=right><TT><FONT 
color=#ff0000><B>1060.54001  </B></FONT></TT></TD>
<TD noWrap align=right><TT><FONT 
color=#ff0000><B>0.00263 </B></FONT></TT></TD>
<TD align=right><TT><FONT 
color=#ff0000><B>0  </B></FONT></TT></TD>
<TD noWrap align=right><TT><FONT 
color=#ff0000><B>(19) </B></FONT></TT></TD>
<TD noWrap align=right><TT><FONT 
color=#ff0000><B>2.4 </B></FONT></TT></TD>
<TD align=right><TT><FONT 
color=#ff0000><B>1  </B></FONT></TT></TD>
<TD noWrap><TT><FONT color=#ff0000><B>R.TLLEGEESR.M + di-MetCarboxylation 
(R)</B></FONT></TT></TD></TR>
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2007-11-05 20:37
#101889 #101889
danke erstmal;
ich habe mir dein code angeschaut,
ich habe folgende frage,
kann ich die <DATA> durch einen Pfad ersetzen, weil ich habe eine Html-Datei auf der Festplatte mit text usw..und enthält diese TR Blöcke, ich kann s nicht im code pasten das ist zugross;
und was anderes:_) gibts ein manual oder howto für Web::Scraper?, weil ich da nicht nachvollziehen kann was du mir gepostet hast.
welche Variante an code wäre besser?? deins oder meins??effizienz??speicher??
schau mal diesen code da bestele ich an ihn rum;

ich danke dir wegen deiner Betreuung; so fühlt man sich besser.

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/perl

use strict;
use warnings;

print "wait please, program running!!!\n ";

use HTML::TreeBuilder;

my $tree = HTML::TreeBuilder->new;

$tree->parse_file('C:/Documents and Settings/Mittler/Desktop/test.html');
#diese test.html enthält viele blöcke von TR, und welche auch ohne 'INPUT' tag du kannst es erstellen in dem du der TR block pastest und kannst auch welche modifizieren in dem du z.B INPUT tag weg lässt.

my @table_rows = $tree->look_down(
'_tag' => 'tr',

sub {              #da tut nicht was ich will?? das der input tag miteibezogen wird

$_[0]->look_down        (
 '_tag' => 'input',)
    

sub {        #die sub tut s wenn die obere sub weg lass, aber bricht ab wenn ein TR block ohne INPUT tag auftaucht, und genau das möchte ich nicht.
$_[0]->look_down        (
'_tag' => 'tt',
sub { $_[0]->as_text =~ /Met/ })
}}
)
);

foreach my $table_row (@table_rows) {
my($input_field) = $table_row->look_down('_tag' => 'input');

print $input_field->attr('value'), "\n";
foreach my $input_text ($table_row->look_down('_tag' => 'tt')){
      #print $input_text->as_text;

my @array = $input_text->as_text;
print "$array[0]\n"; # <---kann ich da diese werte splitten und einzelen ausgeben?

 }
 print"----------------------------------------------\n";

}
print "done!\n"
renee
 2007-11-06 10:31
#101904 #101904
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gast+2007-11-05 19:37:14--
danke erstmal;
ich habe mir dein code angeschaut,
ich habe folgende frage,
kann ich die <DATA> durch einen Pfad ersetzen, weil ich habe eine Html-Datei auf der Festplatte mit text usw..und enthält diese TR Blöcke, ich kann s nicht im code pasten das ist zugross;


Klar, Du kannst auch
Code (perl): (dl )
my $content = do{ local (@ARGV,$/) = '/pfad/zur/datei'; <> };
statt
Code (perl): (dl )
my $content = do{ local $/; <DATA> };
schreiben...

Quote
und was anderes:_) gibts ein manual oder howto für Web::Scraper?,


Es gibt Slides von Tasuhiko Miyagawa online (bei Slideshare)


Quote
weil ich da nicht nachvollziehen kann was du mir gepostet hast.
welche Variante an code wäre besser?? deins oder meins??effizienz??speicher??


Das müsste meins Benchmarken.

Für mich ist mein Code besser, weil ich Web::Scraper kenne, für Dich ist wahrscheinlich Dein Code besser, weil Du das Modul kennst.

Mein Code ist übersichtlicher

Quote
schau mal diesen code da bestele ich an ihn rum;

ich danke dir wegen deiner Betreuung; so fühlt man sich besser.
[... code ... ]
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2007-11-08 00:25
#102011 #102011
ok,
ich werde mich damit beschäftigen und sag Bescheid wie ich dann zurecht komme.
grazie mille :-).
Gast Gast
 2007-11-20 16:39
#102653 #102653
hallo again,
hab mich eine weile damit beschäftigt , und muss sagen das ist mächtig der scraprer aber schlecht dokumentiert,
ich hätte da eine Frage, der script so jetzt gibt mir alles aus,
und was ich gerne hätte sind nur die TR-tags in denen die INPUT-tag vorhanden sind(weil manch gar keine INPUT tag besitzen); und TT-tag in denen die 'MET bzw. met' vorkommt,
also : guck nach TR;
die bedingungen die geprüft werden müsse:
1. guck nach INPUT tag ob vorhanden ist wenn nicht dann weiter zum nächsten TR tag. wenn ja dann:

. guck nach TT der MET bzw met string enthält wenn ja dann gib die variablen aus Ladung...usw, wenn nein dann zum nächsten TR.
eifach die 2 prüfbedingungen einfügen.
danke wieder im voraus,
ps ich weiss schon dass ich nach dem for shleife addieren muss aber wie??mir nicht gelungen.
Gast Gast
 2007-11-21 21:13
#102746 #102746
ok, habs hin gekriegt:-))
ist erledigt.
danke mille.
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2007-10-23 03:13.