DOM HTML 使用 javascript 提取信息

DOM HTML Extract infromation with javascript

提问人:soro 提问时间:6/20/2022 最后编辑:soro 更新时间:6/20/2022 访问量:57

问:

嗨,我正在尝试提取此 HTML 的信息。但是当它到达描述时,我遇到了麻烦,这是我的代码

 let divCardDes = document.createElement('div');
    divCardDes.className = 'des';
    let pDescription = document.createElement('p');
    let resultDescription = xmlDoc.evaluate('.//div/div[@class="short"]', node, null, XPathResult.FIRST_ORDERED_NODE_TYPE);
    pDescription.innerHTML = '<strong>Descripcion: </strong>' + resultDescription.singleNodeValue.p;
    divCardDes.appendChild(pDescription);
    console.log(resultDescription)

和 html :

<div class="row d-block align-end" data-v-1a4e2f4c="">
<div index="0" class="row" data-v-744a5232="" data-v-1a4e2f4c="">
    <div class="col-lg-2 col-3" data-v-744a5232=""><a
            href="/libro-el-peligro-de-estar-cuerda/9788432240645/12789134" title="EL PELIGRO DE ESTAR CUERDA"
            class="py-2" data-v-744a5232=""><img title="el peligro de estar cuerda-9788432240645"
                alt="el peligro de estar cuerda-9788432240645"
                src="https://imagessl5.casadellibro.com/a/l/t1/45/9788432240645.jpg"
                data-src="https://imagessl5.casadellibro.com/a/l/t1/45/9788432240645.jpg" width="" height=""
                class="show-shadow cdl-img active" style="max-height:undefinedpx;max-width:undefinedpx;"
                data-v-744a5232=""></a></div>
    <div class="col-lg-10 col-9" data-v-744a5232="">
        <div class="row row--dense" data-v-744a5232="">
            <div class="col col-11" data-v-744a5232=""><a
                    href="/libro-el-peligro-de-estar-cuerda/9788432240645/12789134"
                    title="EL PELIGRO DE ESTAR CUERDA" class="title" data-v-744a5232="">
                    EL PELIGRO DE ESTAR CUERDA
                </a></div>
            <div class="hidden-md-and-down col col-1" data-v-744a5232=""><span aria-hidden="true"
                    class="v-icon notranslate theme--light accent--text" data-v-744a5232=""><svg
                        xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img" aria-hidden="true"
                        class="v-icon__svg">
                        <path
                            d="M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z">
                        </path>
                    </svg></span> <span class="text-subtitle-1" data-v-744a5232="">7</span></div>
            <div class="col col-12" data-v-744a5232=""><a href="/libros-ebooks/rosa-montero/9812"
                    class="author text-underline-over" data-v-744a5232="">
                    Rosa Montero
                </a></div>
            <div class="col col-12" data-v-744a5232="">
                <div data-v-ce307848="" data-v-744a5232="">
                    <div class="short" style="-webkit-line-clamp:5;" data-v-ce307848="">
                        Una apasionada defensa del valor de ser diferente.Partiendo de su experiencia personal y de
                        la lectura de numerosos libros de psicología, neurociencia, literatura y memorias de grandes
                        autores de distintas disciplinas creativas, Rosa Montero nos ofrece un estudio apasionante
                        sobre los vinculos entre la creatividad y la inestabilidad mental. Y lo hace compartiendo
                        con el lector numerosas curiosidades asombrosas sobre como funciona nuestro cerebro al
                        crear, desmenuzando todos los aspectos que influyen en la creatividad, y montandolos ante
                        los ojos del lector mientras escribe, como un detective dispuesto a resolver las piezas
                        dispersas de una investigacion.Ensayo y ficcion se dan la mano en esta exploracion sobre los
                        vinculos entre la creatividad y la locura, y asi el lector asistira en directo al mismo
                        proceso de la creacion, descubrira la teoria de "la tormenta perfecta", esto es, que en el
                        estallido creativo confluyen una serie de factores irrepetibles, quimicos y situacionales, y
                        compartira la experiencia personal de como Rosa Montero vivio en directo, y durante años,
                        muy cerca de la locura.El peligro de estar cuerda habla de que "las hadas" nos dan un don, y
                        nos hacen pagar un precio por el; los normales no pagamos ese duro precio, pero corremos el
                        riesgo de morir de tedio, en lugar de morir de amor. Como en todo, la clave esta en el
                        equilibrio entre el porcentaje de desapego y el de sentimiento, en lograr cierta armonia
                        entre el yo que sufre y el yo que controla, dice la propia autora.
                    </div>
                    <div class="action" style="" data-v-ce307848=""><a
                            class="success--text text-body-2 accent2--text text-underline-hover" data-v-ce307848=""
                            data-v-744a5232="">
                            Ver más
                        </a></div>
                </div>
            </div>

我想在代码的最后一部分获取文本,div 说 class short。我认为 xpath 是错误的,但我不知道为什么。sombody能帮我吗?

Javascript HTML DOM xpath

评论

0赞 Martin Honnen 6/20/2022
应该做什么或选择什么?你想要吗?resultDescription.singleNodeValue.presultDescription.singleNodeValue.textContent
0赞 soro 6/20/2022
是的,我想要文字。我尝试按照您所说的更改它,但仍然不起作用
0赞 epascarello 6/20/2022
为什么要对 HTML 文档使用 xpath?DOM 方法要容易得多

答:

0赞 Martin Honnen 6/20/2022 #1

您还没有提供完整但最小的可执行示例,该路径对我有用,假设您在 HTML DOM 文档中:div

    let divCardDes = document.createElement('div');
    divCardDes.className = 'des';
    let pDescription = document.createElement('p');
    let resultDescription = document.evaluate('.//div/div[@class="short"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE);
    pDescription.innerHTML = '<strong>Descripcion: </strong>' + resultDescription.singleNodeValue.textContent;
    divCardDes.appendChild(pDescription);
    console.log(resultDescription);
    console.log(divCardDes);
    document.body.appendChild(divCardDes);
<div class="col col-12" data-v-744a5232="">
                <div data-v-ce307848="" data-v-744a5232="">
                    <div class="short" style="-webkit-line-clamp:5;" data-v-ce307848="">
                        Una apasionada defensa del valor de ser diferente.Partiendo de su experiencia personal y de
                        la lectura de numerosos libros de psicología, neurociencia, literatura y memorias de grandes
                        autores de distintas disciplinas creativas, Rosa Montero nos ofrece un estudio apasionante
                        sobre los vinculos entre la creatividad y la inestabilidad mental. Y lo hace compartiendo
                        con el lector numerosas curiosidades asombrosas sobre como funciona nuestro cerebro al.....
                    </div>
               </div>
</div>

对于更复杂的输入示例,路径还会选择一个元素,当然您可以使用以下命令获取文本:.textContent

const html = `<div class="row d-block align-end" data-v-1a4e2f4c="">
<div index="0" class="row" data-v-744a5232="" data-v-1a4e2f4c="">
    <div class="col-lg-2 col-3" data-v-744a5232=""><a
            href="/libro-el-peligro-de-estar-cuerda/9788432240645/12789134" title="EL PELIGRO DE ESTAR CUERDA"
            class="py-2" data-v-744a5232=""><img title="el peligro de estar cuerda-9788432240645"
                alt="el peligro de estar cuerda-9788432240645"
                src="https://imagessl5.casadellibro.com/a/l/t1/45/9788432240645.jpg"
                data-src="https://imagessl5.casadellibro.com/a/l/t1/45/9788432240645.jpg" width="" height=""
                class="show-shadow cdl-img active" style="max-height:undefinedpx;max-width:undefinedpx;"
                data-v-744a5232=""></a></div>
    <div class="col-lg-10 col-9" data-v-744a5232="">
        <div class="row row--dense" data-v-744a5232="">
            <div class="col col-11" data-v-744a5232=""><a
                    href="/libro-el-peligro-de-estar-cuerda/9788432240645/12789134"
                    title="EL PELIGRO DE ESTAR CUERDA" class="title" data-v-744a5232="">
                    EL PELIGRO DE ESTAR CUERDA
                </a></div>
            <div class="hidden-md-and-down col col-1" data-v-744a5232=""><span aria-hidden="true"
                    class="v-icon notranslate theme--light accent--text" data-v-744a5232=""><svg
                        xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img" aria-hidden="true"
                        class="v-icon__svg">
                        <path
                            d="M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z">
                        </path>
                    </svg></span> <span class="text-subtitle-1" data-v-744a5232="">7</span></div>
            <div class="col col-12" data-v-744a5232=""><a href="/libros-ebooks/rosa-montero/9812"
                    class="author text-underline-over" data-v-744a5232="">
                    Rosa Montero
                </a></div>
            <div class="col col-12" data-v-744a5232="">
                <div data-v-ce307848="" data-v-744a5232="">
                    <div class="short" style="-webkit-line-clamp:5;" data-v-ce307848="">
                        Una apasionada defensa del valor de ser diferente.Partiendo de su experiencia personal y de
                        la lectura de numerosos libros de psicología, neurociencia, literatura y memorias de grandes
                        autores de distintas disciplinas creativas, Rosa Montero nos ofrece un estudio apasionante
                        sobre los vinculos entre la creatividad y la inestabilidad mental. Y lo hace compartiendo
                        con el lector numerosas curiosidades asombrosas sobre como funciona nuestro cerebro al
                        crear, desmenuzando todos los aspectos que influyen en la creatividad, y montandolos ante
                        los ojos del lector mientras escribe, como un detective dispuesto a resolver las piezas
                        dispersas de una investigacion.Ensayo y ficcion se dan la mano en esta exploracion sobre los
                        vinculos entre la creatividad y la locura, y asi el lector asistira en directo al mismo
                        proceso de la creacion, descubrira la teoria de "la tormenta perfecta", esto es, que en el
                        estallido creativo confluyen una serie de factores irrepetibles, quimicos y situacionales, y
                        compartira la experiencia personal de como Rosa Montero vivio en directo, y durante años,
                        muy cerca de la locura.El peligro de estar cuerda habla de que "las hadas" nos dan un don, y
                        nos hacen pagar un precio por el; los normales no pagamos ese duro precio, pero corremos el
                        riesgo de morir de tedio, en lugar de morir de amor. Como en todo, la clave esta en el
                        equilibrio entre el porcentaje de desapego y el de sentimiento, en lograr cierta armonia
                        entre el yo que sufre y el yo que controla, dice la propia autora.
                    </div>
                    <div class="action" style="" data-v-ce307848=""><a
                            class="success--text text-body-2 accent2--text text-underline-hover" data-v-ce307848=""
                            data-v-744a5232="">
                            Ver más
                        </a></div>
                </div>
            </div>`;
            
const htmlDoc = new DOMParser().parseFromString(html, 'text/html');

    let divCardDes = document.createElement('div');
    divCardDes.className = 'des';
    let pDescription = document.createElement('p');
    let resultDescription = htmlDoc.evaluate('.//div/div[@class="short"]', htmlDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE);
    pDescription.innerHTML = '<strong>Descripcion: </strong>' + resultDescription.singleNodeValue.textContent;
    divCardDes.appendChild(pDescription);
    console.log(divCardDes);
    document.body.appendChild(divCardDes);
<div class="row d-block align-end" data-v-1a4e2f4c="">
<div index="0" class="row" data-v-744a5232="" data-v-1a4e2f4c="">
    <div class="col-lg-2 col-3" data-v-744a5232=""><a
            href="/libro-el-peligro-de-estar-cuerda/9788432240645/12789134" title="EL PELIGRO DE ESTAR CUERDA"
            class="py-2" data-v-744a5232=""><img title="el peligro de estar cuerda-9788432240645"
                alt="el peligro de estar cuerda-9788432240645"
                src="https://imagessl5.casadellibro.com/a/l/t1/45/9788432240645.jpg"
                data-src="https://imagessl5.casadellibro.com/a/l/t1/45/9788432240645.jpg" width="" height=""
                class="show-shadow cdl-img active" style="max-height:undefinedpx;max-width:undefinedpx;"
                data-v-744a5232=""></a></div>
    <div class="col-lg-10 col-9" data-v-744a5232="">
        <div class="row row--dense" data-v-744a5232="">
            <div class="col col-11" data-v-744a5232=""><a
                    href="/libro-el-peligro-de-estar-cuerda/9788432240645/12789134"
                    title="EL PELIGRO DE ESTAR CUERDA" class="title" data-v-744a5232="">
                    EL PELIGRO DE ESTAR CUERDA
                </a></div>
            <div class="hidden-md-and-down col col-1" data-v-744a5232=""><span aria-hidden="true"
                    class="v-icon notranslate theme--light accent--text" data-v-744a5232=""><svg
                        xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img" aria-hidden="true"
                        class="v-icon__svg">
                        <path
                            d="M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z">
                        </path>
                    </svg></span> <span class="text-subtitle-1" data-v-744a5232="">7</span></div>
            <div class="col col-12" data-v-744a5232=""><a href="/libros-ebooks/rosa-montero/9812"
                    class="author text-underline-over" data-v-744a5232="">
                    Rosa Montero
                </a></div>
            <div class="col col-12" data-v-744a5232="">
                <div data-v-ce307848="" data-v-744a5232="">
                    <div class="short" style="-webkit-line-clamp:5;" data-v-ce307848="">
                        Una apasionada defensa del valor de ser diferente.Partiendo de su experiencia personal y de
                        la lectura de numerosos libros de psicología, neurociencia, literatura y memorias de grandes
                        autores de distintas disciplinas creativas, Rosa Montero nos ofrece un estudio apasionante
                        sobre los vinculos entre la creatividad y la inestabilidad mental. Y lo hace compartiendo
                        con el lector numerosas curiosidades asombrosas sobre como funciona nuestro cerebro al
                        crear, desmenuzando todos los aspectos que influyen en la creatividad, y montandolos ante
                        los ojos del lector mientras escribe, como un detective dispuesto a resolver las piezas
                        dispersas de una investigacion.Ensayo y ficcion se dan la mano en esta exploracion sobre los
                        vinculos entre la creatividad y la locura, y asi el lector asistira en directo al mismo
                        proceso de la creacion, descubrira la teoria de "la tormenta perfecta", esto es, que en el
                        estallido creativo confluyen una serie de factores irrepetibles, quimicos y situacionales, y
                        compartira la experiencia personal de como Rosa Montero vivio en directo, y durante años,
                        muy cerca de la locura.El peligro de estar cuerda habla de que "las hadas" nos dan un don, y
                        nos hacen pagar un precio por el; los normales no pagamos ese duro precio, pero corremos el
                        riesgo de morir de tedio, en lugar de morir de amor. Como en todo, la clave esta en el
                        equilibrio entre el porcentaje de desapego y el de sentimiento, en lograr cierta armonia
                        entre el yo que sufre y el yo que controla, dice la propia autora.
                    </div>
                    <div class="action" style="" data-v-ce307848=""><a
                            class="success--text text-body-2 accent2--text text-underline-hover" data-v-ce307848=""
                            data-v-744a5232="">
                            Ver más
                        </a></div>
                </div>
            </div>

评论

0赞 soro 6/20/2022
我现在添加了完整的html,谢谢回答
0赞 Martin Honnen 6/20/2022
@soro,我的两个示例都选择了一个元素并输出其,第一个示例使用嵌入在主文档中的原始问题的 HTML 代码段,第二个示例将使用 DOMParser 编辑中的较大代码片段解析为 text/html,然后应用问题中的 XPath。textContent