2012-03-13 8 views
0

누군가가 해결 한 웹 페이지에서 정보를 스크랩하는 데 문제가 있었지만 그 구조에서 데이터를 가져와 일반 문자열 변수에 넣고 싶습니다. 이것을 말하고 새로운 질문을 만들라는 말을 들었습니다. 그래서 여기 있습니다!웹 :: 쿼리 및 데이터 추출

코드 :

use Web::Query 'wq'; 
my $football_matches = wq($mech->content) 
    ->find('tr.match') 
    ->map(sub { 
     my (undef, $e) = @_; 
     return 'v' eq $e->find('td.score')->text 
      ? [ 
       $e->attr('id'), 
       map { $e->find("td.$_")->text } 
        (qw(tournament dateTime homeTeam score awayTeam prices)) 
      ] 
      :(); 
    }); 
use Data::Dumper; print Dumper $football_matches; 

출력 : 내가하고 싶은 무엇

$VAR1 = [ 
    ['tn7gc635476', '', ' Mo 12Mar 2012 ', 'Arsenal', 'v', 'Newcastle', ' '], 
    ['tn7gc649937', '', ' Tu 13Mar 2012 ', 'Liverpool', 'v', 'Everton', ' '], 
    ['tn7gc635681', '', ' Sa 17Mar 2012 ', 'Fulham', 'v', 'Swansea', ' '], 
    ['tn7gc635661', '', ' Sa 17Mar 2012 ', 'Wigan',  'v', 'West Brom', ' '], 
    ['tn7gc635749', '', ' Su 18Mar 2012 ', 'Wolves', 'v', 'Man Utd', ' '], 
    ['tn7gc635556', '', ' Su 18Mar 2012 ', 'Newcastle', 'v', 'Norwich', ' '] 
]; 

는 각 날짜, 홈 팀과 원정 팀을 정상 변수/배열에 넣어이다.

미리 감사드립니다.

답변

0

perldscperlref을 확인하실 수 있습니다. array-of-array 및 arrayref를 찾으십시오.

+1

perlref는 +1, perldsc는 -1입니다. 나는 perlref (그리고 [perlreftut] (http://p3rl.org/reftut)을 강력히 추천한다.)를 잘 이해한다면 dsc는 버팀목이라고 생각한다. 그러면 dsc의 레시피를 따를 필요가 없다. –

+0

나는 perl에 꽤 익숙하다. $ football_matches 배열의 배열이 맞습니까? 이 대답이 나에게 주어지기 전에 말했듯이, 처음에는 HTML :: TokeParser를 사용하여 이것을 시도하면서 100 % 이해하지 못했습니다. – blacky