本を読む

読書やコンピュータなどに関するメモ

続・LWPはHTMLのhttp-equivを解釈する

の続き。

 PerlのLWPを使っていて、最近どうも挙動がヘンだなぁと思っていたところ、上記エントリで書いたような仕様が変わっていました。ハマったのでメモ。

 Changelogより。

2009-06-15 Release 5.827

(略)

Don't let the parse_head callback append to the HTTP headers

 挙動としては、HTTPヘッダとmeta http-equivとで同じ項目がある場合に、後者が無視されるようになってました。

 LWP::UserAgent.pmより。

変更前:

               $parser = HTML::HeadParser->new($response->{'_headers'});
(略)
                   callback => sub {
                       return unless $parser;
                       $parser->parse($_[3]) or undef($parser);
                   },

変更後:

               $parser = HTML::HeadParser->new;
(略)
                   callback => sub {
                       return unless $parser;
                       unless ($parser->parse($_[3])) {
                           my $h = $parser->header;
                           for my $f ($h->header_field_names) {
                               $response->init_header($f, [$h->header($f)]);
                           }
                           undef($parser);
                       }
                   },

追記2009-07-21

 Web::Scraperは0.31で対応してました。それによると、レスポンスオブジェクトのcontent_charsetメソッドで調べるといいようです。Changesより。

- Use new LWP's content_charset method instead of HTTP::Response::Encoding
(Thanks to hanekomu)

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/638-09ae056a

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad