0

このサイトのヘルプにより、Perlである程度の進歩を遂げていますが、問題が発生しました。スクレイピングしていたページの1つが変更され、現在そのページにアクセスする方法がわかりません。私がやりたいのは、行きたい各ページへのリンクを保存することです。問題は、これらのリンクがソースコードのahref属性タグ内にあり、それらを抽出する方法がわからないことです。誰か助けてもらえますか?

必要なリンクは、このページの316行目から354行目までです(ソースコード)http://www.soccerbase.com/teams/home.sd

基本的に、他のスクリプトで使用する変数へのリンクを抽出する必要があります。前述のように、私はWWW::MechanizeとHTML::TokeParserを使用しています。うまくいけば、これらの中に使用できるメソッドがありますが、現在は理解できません。前もって感謝します!

4

1 に答える 1

0

WWW::Mechanizeのメソッドfind_all_linksを参照してください。パーサーを手動で煩わせる必要はありません。正規表現を緩和して、可能なチームを一度に最大1000個すべて取得できるようにすることをお勧めします。

use WWW::Mechanize qw();
my $w = WWW::Mechanize->new;
$w->get('http://www.soccerbase.com/teams/home.sd');
for my $link ($w->find_all_links(url_regex => qr/comp_id=1\b/)) {
    # 20 instances of WWW::Mechanize::Link
    printf "URL=%s\tTeam=%s\n", $link->url_abs, $link->text
}

URL=http://www.soccerbase.com/tournaments/tournament.sd?comp_id=1       Team=Premier League
URL=http://www.soccerbase.com/teams/team.sd?team_id=142&comp_id=1       Team=Arsenal
URL=http://www.soccerbase.com/teams/team.sd?team_id=154&comp_id=1       Team=Aston Villa
URL=http://www.soccerbase.com/teams/team.sd?team_id=308&comp_id=1       Team=Blackburn
URL=http://www.soccerbase.com/teams/team.sd?team_id=354&comp_id=1       Team=Bolton
URL=http://www.soccerbase.com/teams/team.sd?team_id=536&comp_id=1       Team=Chelsea
URL=http://www.soccerbase.com/teams/team.sd?team_id=942&comp_id=1       Team=Everton
URL=http://www.soccerbase.com/teams/team.sd?team_id=1055&comp_id=1      Team=Fulham
URL=http://www.soccerbase.com/teams/team.sd?team_id=1563&comp_id=1      Team=Liverpool
URL=http://www.soccerbase.com/teams/team.sd?team_id=1718&comp_id=1      Team=Man City
URL=http://www.soccerbase.com/teams/team.sd?team_id=1724&comp_id=1      Team=Man Utd
URL=http://www.soccerbase.com/teams/team.sd?team_id=1823&comp_id=1      Team=Newcastle
URL=http://www.soccerbase.com/teams/team.sd?team_id=1855&comp_id=1      Team=Norwich
URL=http://www.soccerbase.com/teams/team.sd?team_id=2093&comp_id=1      Team=QPR
URL=http://www.soccerbase.com/teams/team.sd?team_id=2477&comp_id=1      Team=Stoke
URL=http://www.soccerbase.com/teams/team.sd?team_id=2493&comp_id=1      Team=Sunderland
URL=http://www.soccerbase.com/teams/team.sd?team_id=2513&comp_id=1      Team=Swansea
URL=http://www.soccerbase.com/teams/team.sd?team_id=2590&comp_id=1      Team=Tottenham
URL=http://www.soccerbase.com/teams/team.sd?team_id=2744&comp_id=1      Team=West Brom
URL=http://www.soccerbase.com/teams/team.sd?team_id=2783&comp_id=1      Team=Wigan
URL=http://www.soccerbase.com/teams/team.sd?team_id=2848&comp_id=1      Team=Wolves
于 2012-02-21T20:33:04.593 に答える