2006年6月30日

[Namazu-devel-ja 1109] HTML-Parser パーサーを用いた html.pl の不具合

寺西です。

HEAD の HTML-Parser パーサーを用いた html.pl では --meta が働かない
ことに気づきました。

少し調べると次のような処理になっているわけですが、

my $metatags = "keywords|description";

:
while ( my ($key, $val) = each %{$attr_hashref} ) {
if ($key =~ /^NAME$/i){
if ($val =~ /^($metatags)$/io){
if ($key =~ /^CONTENT$/i){
$$weighted_str .=
"\x7f$weight\x7f$val\x7f/$weight\x7f\n";
}
}elsif (($var::Opt{'meta'})&&($val =~
/^($conf::META_TAGS)$/io)) {
if ($key =~ /^CONTENT$/i){
$html::fields->{$key} .= $val . " ";
util::dprint("meta: $key: $fields->{$key}\n");
$$html::weighted_str .=
"\x7f$weight\x7f$val\x7f/$weight\x7f\n";
}
}
}
}


細かく見ていくと、

while ( my ($key, $val) = each %{$attr_hashref} ) {

ここで $key と $val のペアを作りだして

if ($key =~ /^NAME$/i){
if ($val =~ /^($metatags)$/io){

$key が name で $val が keyword か description ならここに到着しますが、
$key は content には成りえないので、次の if 文は真になりません。

if ($key =~ /^CONTENT$/i){
$$weighted_str .=
"\x7f$weight\x7f$val\x7f/$weight\x7f\n"

}
}elsif (($var::Opt{'meta'})&&($val =~
/^($conf::META_TAGS)$/io)) {

こちらも同様です。
if ($key =~ /^CONTENT$/i){
$html::fields->{$key} .= $val . " ";
util::dprint("meta: $key: $fields->{$key}\n");
$$html::weighted_str .=
"\x7f$weight\x7f$val\x7f/$weight\x7f\n";
}
}
}
}


author を取り出す別のところでは

while ( my ($key, $val) = each %{$attr_hashref} ) {
$existauthor = 'yes' if ($key =~ /^NAME$/i)&&($val =~
/^AUTHOR$/i);
$author = $val if ($key =~ /^CONTENT$/i)&&($existauthor eq
'yes');
}

といったように $existauthor をフラグに使って、
といった複数の属性の組合せに対応しています。

しかし、決まりきっているならループで回さなくても、こんな感じで良い
ような気がします。

if (%{$attr_hashref}->{name} =~ /^AUTHOR$/i) {
my $val = %{$attr_hashref}->{content};
if (defiend $val) {
$author = $val;
}
}
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E

_______________________________________________
Namazu-devel-ja mailing list
Namazu-devel-ja@xxxxx
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-devel-ja

投稿者 xml-rpc : 2006年6月30日 21:48
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/40406
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。