Pregunta

ok ive consiguió este código:

public static string ScreenScrape(string url)
    {
        System.Net.WebRequest request = System.Net.WebRequest.Create(url);
        // set properties of the request
        using (System.Net.WebResponse response = request.GetResponse())
        {
            using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream()))
            {
                return reader.ReadToEnd();
            }
        }
    }

Ahora quiero filtrar el texto para obtener los div class = los "comentario" ¿hay otra opción que no sea el uso de expresiones regulares? o es que la única manera?

gracias

¿Fue útil?

Solución

Es necesario utilizar el HTML agilidad Paquete .

Por ejemplo:

var doc = new HtmlWeb().Load(url);
var comments = doc.Descendants("div")
                  .Where(div => div.GetAttributeValue("class", "") == "comment");

Tenga en cuenta que esto no va a encontrar <div class="OtherClass comment">; si usted está buscando para ello, puede llamar IndexOf.

Otros consejos

HtmlAgilityPack es sólo un paquete, que le permite manipular archivos html, sin embargo, si usted quiere hacer raspadura pantalla de selenio WebDriver con PhantomJS es mejor solución. PhantomJS navegador web es decapitado por lo que es muy rápido. Por otra parte, tiene mucho mejor funcionalidad en comparación con el paquete de agilidad html. Hay un corto curso sobre este tema.

shoulnd't utiliza expresiones regulares para analizar HTML - que son la herramienta adecuada para el trabajo, como HTML es demasiado complejo para ellos
. Debe utilizar un analizador de HTML.
Ver también: Buscando C # analizador HTML

primer punto de contacto debe ser la HTML agilidad Paquete .

Las expresiones regulares son la manera clásica para analizar este tipo de entrada para idiomas que no .NET.

Adicionalmente, si se puede normalizar esta a una variante de XML (es decir, XHTML), puede utilizar XPath para consultar y recuperar los nodos necesarios.

Lo que no quiero hacer es poner en práctica su propio analizador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top