ですべての要素を取得するだから私はチェリオ、あなたはHTMLテキストとトラバースを解析することを可能にするノードサーバ側、上のjQueryに似たライブラリを使用していますjQueryの場合とまったく同じです。私はhtml本文のプレーンテキストを取得する必要がありますが、それだけではなく、対応する要素と番号を取得する必要があります。 IEは:プレーンテキストは第三段落要素で発見された場合、私のようなものだろう:DOMのトラバーサル - どのようにそれに対応するテキスト
{
text: <element plaintext>,
element: "p-3"
}
を私は現在、これを行うにしようと、次の機能があります。
var plaintext_elements = traverse_tree($('body'));
function traverse_tree(root, found_elements = {}, return_array = []) {
if (root.children().length) {
//root has children, call traverse_tree on that subtree
traverse_tree(root.children().first(), found_elements, return_array);
}
root.nextAll().each(function(i, elem) {
if ($(elem).children().length) {
//if the element has children call traverse_tree on the element's first child
traverse_tree($(elem).children().first(), found_elements, return_array)
}
else {
if (!found_elements[$(elem)[0].name]) {
found_elements[$(elem)[0].name] = 1;
}
else {
found_elements[$(elem)[0].name]++
}
if ($(elem).text() && $(elem).text != '') {
return_array.push({
text: $(elem).text(),
element: $(elem)[0].name + '-' + found_elements[$(elem)[0].name]
})
}
}
})
if (root[0].name == 'body') {
return return_array;
}
}
を私はに行くアム正しい方向に、私は他の何かをしようとしますか?これについての助けに感謝します。再びこれはjQueryではなくですが、サーバー側でCheerioです。
を使用した場合トラバーサルの多くは、あなたが持っている要素を無視するために満足しているように見える必要はないと思う(彼らは、しかし、非常によく似ています)子どもとテキスト? 「
text
dt「dt」のように、これは私が遭遇した問題の1つです。私は大文字の重複を取らずにその事件を処理する方法がわかりません。たとえば、 'blah blah blah'は、tdとaの両方について「あまりにも短い」を拾います。 – janedoe