- ベストアンサー
Perlテーブル要素の抜粋について
- <table border="1">テーブル要素の抜粋について質問があります。テーブル1番目とテーブル3番目の情報のテーブル内の文字列をカンマ区切りで保存する方法を教えてください。
- 表の情報をカンマ区切りで保存する方法を教えてください。
- Perlでテーブル要素の抜粋を実現する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
HTML::TagParser を使うと楽に出来そうです。 まず、条件として1つ目と3つ目のテーブルにHTMLのClass名を設定します。 <table border="1" class="person">#1個目 <table border="1" class="result">#3個目 =============== 以下 Perl スクリプト ================= use HTML::TagParser; $html = HTML::TagParser->new("table-parser-utf.html"); @person = $html->getElementsByClassName("person"); @result = $html->getElementsByClassName("result"); # 以下、1つ目のテーブルをCSVに整形 foreach ( @person ) { $text = $_->innerText; $text =~ s/(No|名前|ランク)(\r|\n)+//g; $text =~ s/(\r|\n)+/\,/g; $text =~ s/\s+\,//g; print "$text\n"; # *1 } #以下、3つ目のテーブルをCSVに整形 foreach ( @result ) { $text2 = $_->innerText; $text2 =~ s/(試験日|科目|参考資料|点数|順位)(\r|\n)+//g; $text2 =~ s/(\r|\n)+/\,/g; $text2 =~ s/\s+\,//g; } @text2 = split(/\,/,$text2); $i = 1; foreach (@text2) { if ($i % 4 == 0) { $resultCsv .= "$_\n"; } # *1 else { $resultCsv .= "$_,"; } $i++; } ================================================= 参考までに $text に「1,太郎,A」が入ります。 $resultCsvに「 2015/6/25,国語,70,12 2015/8/25,数学,80,5 2015/10/25,75,8 2015/12/25,96,2 」が入ります。 あとは上記を参考にカスタマイズすることで、ご希望の結果が得られると思います。 *1 : 改行コードはCSVの運用環境に応じて適宜使い分けてください。
その他の回答 (2)
- Wap58
- ベストアンサー率33% (29/87)
わたしもbakanandesuよー こねくりまわすレネルなのね use strict; use warnings; my $count_1 = 0; my $count_2 = 0; my $search = 3; my $Log; open KK,'table.txt'; while(<KK>){ chomp; $count_1++ if $_ =~ m[^<table] ; if( $count_1 == 1 or $count_1 == 3 ){ if( $_ =~ m[^<td>[^<]] ){ $_=~s[<.+?>][]g; if( $count_2 != $search ){ $Log .= "$_,"; }else{ $search += 4; $Log .= "\n$_,"; } $count_2++; } } } close KK; my @an = split(/\n/,$Log); for(@an){ chop; print"$_\n"; }
- hok212
- ベストアンサー率66% (100/150)
こんにちは。 まず、ファイルの構成について教えてください。 提示された3つのテーブルは、1つのHTMLファイルに入っているのでしょうか? あるいは3つのHTMLファイルに分割されているのでしょうか? 1つのHTMLファイルであれば、そのファイル内でのTABLEタグの登場回数は3回のみでしょうか?
お礼
こんばんは ご回答ありがとうございます! 1つのHTMLにテーブルはあります! テーブル自体は他にも、複数あり 6~??と不確定要素であります…
お礼
ありがとうございました!! やりたいことができました!