如何使用Web :: Scraper解析此HTML?

用户名

我正在尝试使用Web :: Scraper解析以下HTML:

<div>
<p><strong>TITLE1</strong>
<br>
DESCRIPTION1
</p>
<p><strong>TITLE2</strong>
<br>
DESCRIPTION2
</p>
<p><strong>TITLE3</strong>
<br>
DESCRIPTION3
</p>
</div>

进入

      'test' => [
                  {
                    'name' => 'TITLE1',
                    'desc' => 'DESCRIPTION1 '
                  },
                  {
                    'name' => 'TITLE2',
                    'desc' => 'DESCRIPTION2 '
                  },
                  {
                    'name' => 'TITLE3',
                    'desc' => 'DESCRIPTION3 '
                  }
                ]

我有以下代码,但运气不佳。处理'p'时的'TEXT'既给出了文本,又给出了介于“ strong”之间的内容

      'test' => [
                  {
                    'name' => 'TITLE1',
                    'desc' => 'TITLE1 DESCRIPTION1 '
                  }
                ]

加上其唯一的第一项。

这是我的代码。

use strict;
use Web::Scraper;
use Data::Dumper;

my $html = q[<div>
            <p><strong>TITLE1</strong>
            <br>
            DESCRIPTION1
            </p>
            <p><strong>TITLE2</strong>
            <br>
            DESCRIPTION2
            </p>
            <p><strong>TITLE3</strong>
            <br>
            DESCRIPTION3
            </p>
           </div>
           ];

 my $test = scraper {
 process 'div', 'test[]' => scraper {
    process 'p strong', 'name' => 'TEXT';
    process 'p','desc' => 'TEXT';       
   };
 };

  my $res = $test->scrape(\$html);
  print Dumper($res);   

谢谢你。

津巴布韦

您的代码中有两点需要更改。

要仅获取DESCRIPTION -text,请使用xpath。//p/text()会在any的正下方提供文本节点p,因此strong不包含的文本节点

要使所有p显示块(不仅是第一个)显示在数组中,请使第一个指令处于on位置div p这样,它就可以抓住a的所有p内部,div而不仅仅是一个div

my $test = scraper {
    process 'div p', 'test[]' => scraper {
        process 'p strong',           'name' => 'TEXT';
        process '//p/text()', 'desc' => ['TEXT', sub { s/^\s+|\s+$//g } ];
    };
};

输出(带有Data :: Printer):

\ {
    test   [
        [0] {
            desc   "DESCRIPTION1",
            name   "TITLE1"
        },
        [1] {
            desc   "DESCRIPTION2",
            name   "TITLE2"
        },
        [2] {
            desc   "DESCRIPTION3",
            name   "TITLE3"
        }
    ]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Web :: Scraper解析此HTML?

来自分类Dev

如何使用BeautifulSoup解析此html表

来自分类Dev

如何使用此HTML代码解析我想要的内容?

来自分类Dev

在 C# 中如何更好地解析此 html 内容?

来自分类Dev

如何使用Java使用此Web服务?

来自分类Dev

如何使用GSON解析此JSON?

来自分类Dev

如何使用JavaScriptSeiralizer解析此JSON

来自分类Dev

如何使用LINQ解析此XML?

来自分类Dev

如何使用字典解析此JSON?

来自分类Dev

如何使用PHP解析此JSON?

来自分类Dev

如何使用Aeson解析此JSON?

来自分类Dev

如何使用解析来解决此错误

来自分类Dev

如何使用LibGDX解析此JSON

来自分类Dev

如何使用Ct Qt解析此JSON?

来自分类Dev

如何使用NSDateFormatter解析此格式

来自分类Dev

如何使用GSON解析此JSON?

来自分类Dev

如何使用C#解析此xml

来自分类Dev

如何使用SwiftyJSON解析此json示例?

来自分类Dev

Javascript HTML-如何使用Web API

来自分类Dev

如何解析此数据

来自分类Dev

如何正确解析此 JSON?

来自分类Dev

如何使用php解析HTML?

来自分类Dev

如何在C#中使用此xml Web服务?

来自分类Dev

如何在.NET Web API中使用Unity进行解析

来自分类Dev

如何使用HTML Agility Pack解析HTML

来自分类Dev

如何使用PHP解析此XML字符串

来自分类Dev

如何使用Gson Java解析此转义的Json?

来自分类Dev

如何使用Gson lib解析此json格式

来自分类Dev

如何使用PyParsing解析此字符串?