perl - 使用 MOJO::DOM 查找具有特定 id 模式的 div 下的内容
问题描述
我需要解析一些 HTML 代码。标签 ID 的模式为:
<tr id="date">.....</tr>
<tr id="band01"><td>field1</td><td>field2</td></tr>
<tr id="band02">...contents...</tr>
.....
<tr id="(others">.....
我正在使用 PERL Mojo::DOM 解析器,并且想要提取名称以“band”开头并后跟数字的所有实际 id 及其内容。
我怎么能做到这一点?
解决方案
E[foo^="bar"]选择器匹配任何具有以 "bar" 开头的 "foo" 属性的元素。因此,您可以使用:
my $dom = Mojo::DOM->new($html);
my $rows = $dom->find('tr[id^="band"]');
$rows
将是 Mojo::DOM 对象的 Mojo::Collection,表示每个匹配元素及其各自的内容。例如,要获取匹配的 ID 列表:
my @ids = $rows->map(attr => 'id')->each;
或者使用更标准的 Perl:
my @ids = map { $_->{id} } @$rows;
推荐阅读
- php - 未设置的问题(PHP)
- node.js - JavaScript xml2js 从 xml 文档中的每个对象读取数组
- pandas - 新列中的 Pandas groupby 和 agg 值
- html - 如何在 CSS 中使一行图像居中、左对齐或右对齐
- python - 将python中由换行符分隔的字符串文件解析为json数组
- c# - 在与另一个列表进行迭代时从列表中获取下一个项目
- python - 为什么python2中'1' == u'1'的结果是True?
- spring - 带有 Spring 4 的 Azure AD B2C
- javascript - 如何在网络浏览器上与我的智能合约进行交互
- python-3.x - 在 Unet 中获取超过 3 个类的输出的问题