1

私はすべてが初めてです。助けてください。私はすべてをクロールしようとしています

<div class="name"><a href="/v/name/idlike123123ksajdfk">name</a></div>

ウェブページで。/v/name/idlike123123ksajdfk の部分をキャッチしたいです。(それを知って、

<div class="name"><a href="/v/

一部は修正されています)だから私は正規表現を書きました(あなたを笑わせることができます):

~m#<div class="name"><a href="(/v/.*?)">#

私の愚かなコードを修正していただけると大変助かります。

4

4 に答える 4

6

堅牢な HTML パーサーを使用する(理由については、http: //htmlparsing.com/を参照してください):

use strictures;
use Web::Query qw();
my $w = Web::Query->new_from_html(<<'HTML');
<div class="name"><a href="/v/name/idlike123123ksajdfk">name</a></div>
<div class="name"><a href="/v/name/idlike123123ksajdfk">name</a></div>
<div class="name"><a href="/v/name/idlike123123ksajdfk">name</a></div>
<div class="name"><a href="/v/name/idlike123123ksajdfk">name</a></div>
<div class="name"><a href="/v/name/idlike123123ksajdfk">name</a></div>
HTML

my @v_links = $w->find('div.name > a[href^="/v/"]')->attr('href');
于 2012-05-18T11:47:07.723 に答える
1

HTML からリンクを抽出する Perl モジュールはたくさんあります。WWW::MechanizeMojo::DOMHTML::LinkExtor、およびHTML::SimpleLinkExtorで実行できます。

于 2012-05-18T19:27:17.057 に答える
1

Mojolicious を使用した Web スクレイピングは、現在 Perl で行う最も簡単な方法です。

http://mojolicio.us/perldoc/Mojolicious/Guides/Cookbook#Web_scraping

于 2012-06-12T19:09:03.493 に答える
0

HTML の解析には正規表現を使用しないでください。そのような解析用のライブラリは多数あるためです。

Daximの答えは良い例です。


ただし、とにかく正規表現を使用したい場合で、テキストが に割り当てられている$_場合は、

my @list = m{<div class="name"><a href="(/v/.*?)">}g;

すべての調査結果のリストが表示されます。

于 2012-05-18T11:47:40.167 に答える