es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Webscrape local HTML con PowerShell.

El web scraping puede ser un acierto o un error para mí. ¿Cuál es la forma más eficiente de extraer información de esta página HTML guardada localmente?

Después de realizar invoke-webrequest, se vuelve un poco complicado.
Mi objetivo es guardar los nombres de las aplicaciones (Git 2.33.0.2, Notepad++ 7.9.2 (x64), R for Windows 4.0.2, RStudio 2021.09.0+351, Tableau Desktop 2021.2.3, Accusoft Prizm Viewer 10.0.3.38) en una variable.

Utilizo get-content “ruta del archivo .html” -raw y obtengo el siguiente HTML:

<div>
    <form method="post" action="/MDT/12896/Apps/UpdateSequence" class="ajax">

<div class="listelements">

<ul>

    <li class="corner-all t-state-default t-header">
        Git 2.33.0.2

    </li>

    <li class="corner-all t-state-default t-header">
        Notepad++ 7.9.2 (x64)

    </li>

    <li class="corner-all t-state-default t-header">
        R for Windows 4.0.2

    </li>

    <li class="corner-all t-state-default t-header">
        RStudio 2021.09.0+351

    </li>

    <li class="corner-all t-state-default t-header">
        Tableau Desktop 2021.2.3

    </li>

    <li class="corner-all t-state-default t-header">
        Accusoft Prizm Viewer 10.0.3.38

    </li>

</ul>


</div>
<br class="clear">

        <br class="clear">
</form>

Cualquier consejo sería apreciado.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para raspar eficientemente la página guardada localmente en formato HTML, puedes seguir los siguientes pasos:

    1. Utiliza el cmdlet Get-Content para obtener el contenido del archivo HTML
      $htmlContent = Get-Content -Path "ruta del archivo .html" -Raw
      
    2. Utiliza la biblioteca HTML Agility Pack para raspar el contenido HTML. Esta biblioteca te permite analizar documentos HTML y extraer los datos requeridos de manera eficiente.

      Primero, debes descargar e instalar el paquete HTML Agility Pack utilizando el siguiente comando:

      Install-Package HtmlAgilityPack -Scope CurrentUser
      

      Luego, utiliza el siguiente código para extraer los nombres de las aplicaciones:

      Add-Type -Path "$pwd\packages\HtmlAgilityPack.1.11.33.0\lib\net40\HtmlAgilityPack.dll"
      
      $doc = New-Object HtmlAgilityPack.HtmlDocument
      $doc.LoadHtml($htmlContent)
      
      $appNames = $doc.DocumentNode.SelectNodes("//ul/li")
                            .Select{ $_.InnerText.Trim() }
      

      La variable $appNames contendrá un array con los nombres de las aplicaciones extraídos del contenido HTML.

    Al utilizar el HTML Agility Pack, puedes analizar el documento HTML y extraer los datos requeridos de manera eficiente, incluso si la estructura HTML cambia.

Comments are closed.