如何使用Web :: Scraper获取数据属性的值?

时间:2017-03-16 18:42:46

标签: perl

我已经能够使用简单的HTML结构从网站上抓取数据,并使用Perl模块Web::Scraper从各种标签中检索数据。但是,我遇到了list_filter = ('founded_date','contact')属性,我无法以通常的方式处理。

标签是:

data-

我需要的部分<img class="slide_image" src="https://image.slidesharecdn.com/computerassistedsurgery-160629113952/95/computer-assisted-surgery-1-638.jpg?cb=1467200461" data-small="https://image.slidesharecdn.com/computerassistedsurgery-160629113952/85/computer-assisted-surgery-1-320.jpg?cb=1467200461" data-normal="https://image.slidesharecdn.com/computerassistedsurgery-160629113952/95/computer-assisted-surgery-1-638.jpg?cb=1467200461" data-full="https://image.slidesharecdn.com/computerassistedsurgery-160629113952/95/computer-assisted-surgery-1-1024.jpg?cb=1467200461" alt="COMPUTER ASSISTED SURGERY Something "> 位于属性"https://image.slidesharecdn.com/computerassistedsurgery-160629113952/95/computer-assisted-surgery-1-1024.jpg?cb=1467200461"之后。我目前的代码是:

data-full

失败并显示错误:

  

不知道如何处理0 =&gt; undef at /usr/local/share/perl/5.20.2/Web/Scraper.pm第150行。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

TEXT用于获取元素内的文本。使用@attr获取属性的值:

use strict;
use warnings 'all';
use 5.010;

use Web::Scraper;

my $scraper = scraper {
    process 'img', 'links[]' => '@data-foo';
};

my $result = $scraper->scrape('<img data-foo="foo" data-bar="bar">');
say for @{ $result->{links} };

输出:

foo