如何从HTML中提取属性和文本
How to extract attributes and text from HTML?
我有包含等数据的数据文件
<li class="speaker_index js_only" id="si_4178514"
data-si_id="4178514" data-speaker_id="20864"
data-start_offset="9"
data-end_offset="125">
<h5>
<span class="icon-user">speaker: </span>James Brown
<span class="item_time"><span class="icon-time" title="time">, time: </span>00:01:56</span>
</h5>
<p>The chairman opens the meeting</p>
</li>
我会处理这种数据检索下面的结果
start=9
end=125
speaker=James Brown
text=The chairman opens the meeting
我可以查找各种符号并提取我需要的数据,但我认为这可以通过结构化和通用的方式完成(也许可以使用regex?)
最好是创建一个对象数组(每个对象都有关键字start
、end
、speaker
、text
)。
使用JavaScript实现目标的最佳和最简单的方法是什么?
在使用JavaScript时,可以使用jQuery。
获取起始值的示例(注意,您也可以传递一个包含HTML的字符串,而不是选择器):
var $data = $("#data");
var $li = $("li", $data);
var startOffset = $li.attr("data-start_offset");
alert("start: " + startOffset);
http://jsfiddle.net/j8drarha/5/
如果您的数据是有效的XML,那么您可以进行简单的XSLT转换,例如:
<xsl:template match="li">
start=<xsl:value-of select="@data-start_offset"/>
end=<xsl:value-of select="@data-end_offset"/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="p">
text=<xsl:value-of select="."/>
</xsl:template>
如果你不想参与XSLT,那么按照@Rhumborl的建议,你可以将HTML加载到浏览器中,毕竟浏览器是最好的HTML解析器之一,然后通过以下方式访问你想要的内容(这里不需要jQuery,除非你是受虐狂或真的想支持过时的浏览器):
start = document.querySelect('li').getAttribute('data-start_offset');
或者如果你更喜欢
start = document.querySelect('li').dataset.start_offset
等等。或者,你可以使用他提到的xpath:
start = document.evaluate('//li/@data-start_offset', ...);
您可以编写一个快速JS程序,并在无头浏览器(如PhantomJS)下运行它,然后将所需结果直接输出到控制台,如中所示
console.log("start=", start);
并将其作为运行
phantomjs extract_data.js input.js > output
相关文章:
- 手柄'img'单击事件并插入'alt'使用jQuery将属性转换为文本框
- 如何解析文本区域中的结构化字符串数据(接近JSON)以检索其所需的属性
- JavaScript 文本节点属性
- 更改html标记或其子标记(而不是其属性)文本中的日期格式
- 如何在弹出窗口中隐藏文本属性'It’传单上没有填写
- 更改多个 iframe 中的文本框属性
- 我想从使用onkeypress事件的文本区域获取一个属性
- 单击TextArea'时,文本区域中的属性名称是什么;s上下箭头按钮
- 无法读取未定义的属性“替换” - 替换 JS 生成的 HTML 中的文本
- 使用 CSS3 数据属性进行客户端文本搜索
- 将文本值匹配/分配给属性
- 如何替换元素属性中的部分文本
- FabricJS CurvedText对象(扩展)在更新间距和文本属性时未显示
- jQuery文本属性中的Html代码
- 如何编写将获取属性文本的正则表达式
- 更改属性文本并使用挖空保留输入的值
- 点击时显示弹出窗口,属性文本为JavaScript或jQuery
- 如何在jquery中更改json的属性文本
- 为什么在此示例中出现“无法读取未定义的属性'文本'”
- 如何使用 ajax 获取属性文本