私は、ドメイン内のすべてのオーディオタグを解析し、発見された各オーディオタグからそれぞれ
audio/mpeg
コンテンツをダウンロードしようとPerlでクモを記述しようとしています。以下はHTMLを使用して解析HTML形式のオーディオタグに:: TokeParser
a
タグからリンクを抽出するためにHTMLを解析するHTML::TokeParser
を使用して私のコードからの抜粋です:
my($response, $base, $stream, $pageURL, $tag, $url);
$response = 'http://example.com/page-with-some-audio-content';
$base = URI->new($response->base)->canonical;
$stream = HTML::TokeParser->new($response->content_ref);
$pageURL = URI->new($response->request->uri);
while($tag = $stream->get_tag('a')) {
next unless defined($url = $tag->[1]{'href'});
print $url."\n";
}
上記のコードは、与えられたhtmlページからのすべてのリンクを抽出し、 。これはループ内でURLのハッシュと共に使用され、特定のドメイン内のすべてのページをクロールします。以下は
別のスニペットは、ほぼ完全に私が代わりにa
タグのaudio
タグを抽出しようとしていることを除いて、第1と同じである。いくつかの理由
my($response, $base, $stream, $pageURL, $tag, $url);
$response = 'http://example.com/page-with-some-audio-content';
$base = URI->new($response->base)->canonical;
$stream = HTML::TokeParser->new($response->content_ref);
$pageURL = URI->new($response->request->uri);
while($tag = $stream->get_tag('audio')) {
next unless defined($url = $tag->[1]{'onplaying'});
print $url."\n";
}
、無audio
タグが検出されています。私が紛失しているものがありますか?私は、ネストされたHTML要素の属性を抽出することができないことを理解HTML::TokeParserドキュメントを読ん
。
以下、このマークアップを考えてみましょう:
<audio onplaying="podPress_html5_count('http://www.example.com/mp3/Some Mp3 File.mp3', this.id)">
<source src="http://www.example.com/mp3/Some%20Mp3%20File.mp3">
</audio>
を私が見つけたすべてのaudio
タグの唯一のsrc
属性を抽出するために、全体のHTMLを解析します。 HTMLはこのようなものに見えた場合したがって、:だから私はhtmlファイルを解析する必要が
http://www.example.com/mp3/Some%20Mp3%20File.mp3
http://www.example.com/mp3/Some%20Mp3%20File%202.mp3
http://www.example.com/mp3/Some%20Mp3%20File%203.mp3
http://www.example.com/mp3/Some%20Mp3%20File%204.mp3
:
<body> <audio onplaying="podPress_html5_count('http://www.example.com/mp3/Some Mp3 File.mp3', this.id)"> <source src="http://www.example.com/mp3/Some%20Mp3%20File.mp3"> </audio> <audio onplaying="podPress_html5_count('http://www.example.com/mp3/Some Mp3 File 2.mp3', this.id)"> <source src="http://www.example.com/mp3/Some%20Mp3%20File%202.mp3"> </audio> <audio onplaying="podPress_html5_count('http://www.example.com/mp3/Some Mp3 File 3.mp3', this.id)"> <source src="http://www.example.com/mp3/Some%20Mp3%20File%203.mp3"> </audio> <audio onplaying="podPress_html5_count('http://www.example.com/mp3/Some Mp3 File 4.mp3', this.id)"> <source src="http://www.example.com/mp3/Some%20Mp3%20File%204.mp3"> </audio> </body>
を期待される出力は次のようにする必要があります各
audio
タグの属性のうちsrc
のみを抽出します。
私はモジュールがHTML5をサポートしないことを恐れています。 – choroba
@choroba noooohh !!!!!オプションは何ですか? X( – atefth