我的任务是解析静态HTML页面中的数据,这些数据是由“错放”的数据生成的。
HTML的内容遵循以下模式:
<div class="product-detail">
<h1>Product Name <span>Company</span></h1>
<p>
<strong>Description</strong>
EZ use widget
</p>
<p>
<strong>Location</strong>
China
</p>
<p>
<strong>Width</strong>
10" <span>(26cm)</span>
<strong>Height</strong>
9"
</p>
<p>
<strong>Category</strong>
<a>Widget</a>
</p>
</div>
“产品名称”和“公司”很容易
var productDetail = $('div.product-detail');
var data = {
name: productDetail.children('h1').clone().children().remove().end().text(),
company: productDetail.children('h1').children('span').text()
};
我的问题在于细节。描述名称始终位于<strong>
标记中,但实际描述有时会包含在其他标记中。此外,描述有时会共享<p>
标记(宽度,高度以上),描述因产品而异。
我已经尝试过明显的嫌疑人
productDetails.contents().each( ... )
递归解析甚至纯DOM操作,但最终会产生垃圾,特别是如果描述共享一个<p>
标记。不幸的是,我的jQuery技能让我失望。
使用文本(可能嵌入标记中)<strong>
之后立即获取跟随JSON对象的最简单方法是什么?
{
name: "Product Name",
company: "Company",
Description: "EZ use widget",
Location: "China",
Width: '10"',
Height: '9"',
Category: "Widget"
}
我认为我太接近问题了,错过了明显的答案。
答案 0 :(得分:0)
jQuery library(httr)
library(readr)
read_csv(my.data$content)
将返回一个html元素数组。
.contents()
其中每个都有$(".product-detail > p:eq(2)").contents()
和.textContent
属性。
祝if-else与确定对象组装之前的内容有关!