Pergunta

ok ive tenho esse 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();
            }
        }
    }

Agora eu quero filtrar o texto para obter a classe div = "Comment" ones existe outra opção que não seja usando expressões regulares? ou é que a única maneira?

graças

Foi útil?

Solução

Você precisa usar o agilidade pacote HTML .

Por exemplo:

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

Note que este não vai encontrar <div class="OtherClass comment">; se você está olhando para isso, você pode chamar IndexOf.

Outras dicas

HtmlAgilityPack é apenas um pacote, que permite manipular arquivos de html, no entanto, se você quer fazer tela raspar selênio WebDriver com PhantomJS é melhor solução. PhantomJS é o navegador web sem cabeça por isso, é muito rápido. Além disso, ele tem muito mais funcionalidade em comparação com html agilidade pack. Há um curto curso sobre este tema.

Você shoulnd't usar expressões regulares para analisar HTML - eles são a ferramenta errada para o trabalho, como HTML lo demasiado complexo para eles
. Você deve usar um analisador HTML.
Veja também: Procurando por C # HTML parser

Você primeiro porto de escala deve ser o agilidade pacote HTML .

As expressões regulares são a maneira clássica para analisar este tipo de entrada para línguas não .NET.

Adicionalmente, se você pode normalizar isso para uma variante de XML (ou seja, XHTML), você pode usar XPath para consulta e recuperar os nós necessários.

O que você não quer fazer é implementar o seu próprio analisador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top