1

Perls HTML::TreeBuilderを使用してHTMLページからデータを抽出しようとしています。私のセレクターには次のものが含まれます。

$root->look_down(_tag => 'div', class => 'member-search-results');

しかし、div私が探しているのは複数のクラスがあり、そのうちの1つはですmember-search-results。このコードでは、を見つけることができず、一致を成功させるためにすべてのクラスをdivリストする必要があります。

コードが次のようなタグにも一致するように、要素の検索を含むクラスを実行する方法はありますか?

<div class="CLASS1 member-search-results CLASS2">...</div>

私はこれがうまくいくはずだと理解しています:

$root->look_down(_tag => 'div', class => qr/member-search-results/);

しかし、これはこれを行う正しい方法ですか、それともより良い方法がありますか?

ありがとう

4

3 に答える 3

2

フィリップが指摘したように、正規表現法を使用すると、望ましい結果が得られます。具体的には、これが私が使用したものです:

$tag = $tag->look_down(_tag => 'ol', class => qr/members/);
于 2013-03-10T14:55:00.530 に答える
2

代わりにWeb::Queryを使用してください。そのCSSセレクターは標準に従って機能しています。

use Web::Query qw();
Web::Query
    ->new_from_html('<div class="CLASS1 member-search-results CLASS2">...</div>')
    ->find('div.member-search-results')
    ->text; # returns '...'
于 2013-03-10T09:01:18.150 に答える
1

おそらく、あなたは別々_tagにそしてclass別々にlook_down(それらを一緒に鎖でつなぐ)する必要があります。

私が使う:

$tree->look_down( id => 'mw-content-text' )->look_down( _tag => 'ul' );

https://github.com/pdurbin/scripts/blob/master/inthenews

于 2013-03-10T03:58:18.667 に答える