问题标签 [html-tree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
421 浏览

windows - HTML::TreeBuilder 中的内存泄漏

我有一些 Perl 代码:

我注意到这个perl.exe过程的大小稳步增加(大约 200 万次循环迭代后增加到 600 MB)。如果我把HTML::TreeBuilder东西拿出来,它根本不会增加。我能做些什么来堵住这个泄漏吗?

0 投票
1 回答
355 浏览

html - HTML::TreeBuilder 中的“父”函数究竟是如何工作的?

除非我遗漏了什么,否则CPAN上的文档并没有真正解释这种行为。我整理了一些快速测试代码来说明我的问题:

运行上述脚本后,输出为:

看到所有标签一个接一个地嵌套,我认为第一个p标签h1的父级是 ,第二个p标签的父级是p. 为什么父函数显示body两者的标签?

0 投票
2 回答
1906 浏览

perl - 在 HTML::Element 的 look_down 例程 Perl 中指定多个类?

我正在使用HTML::TreeBuilder来解析一些 HTML。

您可以在“ look_down ”例程中指定多个类吗?

例如,在使用 HTML 搜索时 -

'postprofile'我还要在同一个循环中搜索一个额外的类。

有没有办法做到这一点而不必使用新的 -for ( $tree->look_down( 'class' => 'postprofile' ))

因为这会带回两组结果,而我只想要一组合并的结果。

我尝试使用 -for ( $tree->look_down( 'class' => 'postbody||postprofile')) 但是这不起作用,

先感谢您。

0 投票
1 回答
741 浏览

perl - 使用 HTML::Tree 解析后如何将数据标记为 UTF-8?

我写了一个脚本,我在 UTF-8 编码的 HTML 文件中啜饮,然后将其解析为带有HTML::Tree. 问题是解析字符串后不再标记为 UTF-8。

由于_utf8_on()不推荐设置标志的方法,我正在寻找正确的方法。

我的简化代码示例:

0 投票
2 回答
795 浏览

html - Perl HTML::TreeBuilder 添加 , 和标签到解析的内容,如何停止或解决它?

背景:
我正在使用 HTML::TreeBuilder 解析整个 html 页面,为了参考而说“whole_page”。然后,我使用新 TreeBuilder 对象的继承 parse_content 方法(与 whole_page 相同)来解析一大块 html,例如“html_to_insert”。html_to_insert 的根元素应该是一个<div>标签。最终,需要将 html_to_insert 树插入到 whole_page 树中。

问题:
html_to_insert 树用<html>,<head><body>标签包装,我显然不需要。我查看了 HTML::Parser 以查看是否有可能解决问题的参数,但我找不到任何东西。

问题:
有没有一种简单的方法可以阻止 parse 方法用不需要的标签包装 html_to_insert?知道我要做什么,我是不是倒着做这个屁股(有没有更好的方法)?

谢谢你的帮助。

0 投票
1 回答
696 浏览

perl - 如何使用 HTML::Treebuilder 重新排列 html 内容

我正在编写一个脚本来重新排列 html 内容,但遇到了 2 个问题。我有这个 html 结构,它是电影标题和发行年份,缩略图分为 5 列。我想生成新的 html 文件,其中包含从 2011 年到 1911 年按十年分组的电影,例如 present-2011;2010-2001;2000-1991;等等

我不知道如何解决的一个问题是,在删除与十年不匹配的电影后,我留下了空的“tr”标签和缩略图位置,并且不知道如何重新排列 5 列中的每一行,其中充满了 5 个标题. 以及如何通过一次脚本调用来处理每个十年。谢谢。

0 投票
2 回答
1650 浏览

perl - 如何可视化/漂亮地打印 HTML DOM 树?

现在我可以通过WWW::Mechanize浏览网页并通过HTML::TreeBuilder::XPath通过访问 id获取信息,我只能使用Firebug读取 DOM 以发现 HTML 树的布局。Mechanize 捕获的内容是非结构化的 HTML,对人眼不利。

是否使用 Firebug 来确定我在典型方法后的身份?一旦我得到了 id,我就可以开始了,只是我有几个 id 和有更多 id 的页面要追查,我希望得到(转储、打印等)DOM 的格式化布局为了使发现更容易。尽管被授予,但 Firebug 也让它变得非常容易。我只是想知道我是否缺少更简单的方法。

在 PerlMonks 上交叉发布。

0 投票
3 回答
326 浏览

regex - Perl:为什么这个网络爬虫正则表达式工作不一致?

我遇到了与我要抓取的网站有关的另一个问题。

基本上我已经从页面内容中删除了大部分我不想要的内容,并且由于这里提供的一些帮助,我设法隔离了我想要的日期。尽管一些初始问题与非破坏空间相匹配,但其中大部分似乎工作正常。但是,我现在在使用最终的正则表达式时遇到了困难,该正则表达式旨在将每行数据拆分为字段。每条线代表股价指数的价格。每行的字段是:

  1. 一个任意长度的名称,由拉丁字母表中的字符组成,有时是逗号或与号,没有数字。
  2. 小数点后两位数(索引的绝对值)。
  3. 小数点后有两位数的数字(值的变化)。
  4. 小数点后有两位数字,后跟百分号(值的百分比变化)。

这是一个示例字符串,在拆分之前:“Fishery, Agriculture & Forestry243.45-1.91-0.78% Mining360.74-4.15-1.14% Construction465.36-1.01-0.22% Foods783.2511.281.46% Textiles & Apparels412.070.540. 13% 纸浆和造纸 333.31-0.29-0.09% 化学品 729.406.010.83% "

我用来分割这一行的正则表达式是这样的:

$mystr =~ s/\n(.*?)(\d{1,4}\.\d{2})(\-?\d{1,3}\.\d{2})(.*?%)\n/\n$1 == $2 == $3 == $4\n/ig;

它有时有效,但有时无效,我无法弄清楚为什么会这样。(下面示例输出中的双重等号用于使字段拆分更容易可见。)

我认为对于那些指数价格出现负变化的指数来说,减号是一个问题,但有时尽管有减号,它仍然有效。

问:为什么下面显示的最终正则表达式无法一致地拆分字段?

示例代码如下。

0 投票
2 回答
594 浏览

perl - 网络爬虫文本格式

我有以下代码来访问 HTML 表。

但是文本没有格式化,因为网页使用表格边框来划分某些文本。所以它出现了这样的情况,“乔丹斯敦的计算数学”,我假设乔丹斯敦在下一个单元格中。这是我正在使用的代码,

请注意,我尝试使用和数组分隔文本但没有运气?任何指针。谢谢

0 投票
1 回答
691 浏览

perl - HTML::TagFilter 根据类删除 div

我正在尝试使用 perl 脚本从服务器上的静态 html 文件中提取内容。我想提取特定 div 的内容。我通过类名(“getme”)知道 div。我可以使用 HTML::TreeBuilder->look_down 访问 div。如何删除 div 标签并仅获取其中的内容?

示例 HTML

到目前为止的 Perl

过滤器只是删除类属性。可以制定规则来删除整个标签,还是有更好的方法?