Pergunta

Eu quero analisar a tabela HTML usando pacote html agilidade. Eu quero extrair apenas alguns dados de coluna predefinidos da tabela.

Mas eu sou novo para analisar e html agilidade embalar e eu tentei, mas eu não sei como usar o pacote de agilidade HTML para minha necessidade.

Se alguém sabe então me dar exemplo, se possível

EDIT:

É possível analisar HTML mesa como se queremos extrair apenas dados os nomes das colunas decididos? Como existem 4 colunas nome, endereço, PhnO e quero extrair apenas o nome e dados de endereço.

Foi útil?

Solução

Não é um exemplo de que, nos fóruns de discussão aqui . Desloque-se um pouco para ver a resposta mesa. Eu gostaria que eles pudessem fornecer melhores amostras que eram mais fáceis de encontrar.

EDIT: Para extrair dados de colunas específicas que você teria que primeiro encontrar as tags <th> que correspondem às colunas que você deseja e lembre-se seus índices. Você, então, precisa encontrar as tags <td> para os mesmos índices. Supondo que você sabe os índices das colunas que você poderia fazer algo parecido com isto:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("http://somewhere.com");
HtmlNode table = doc.DocumentNode.SelectSingleNode("//table");
foreach (var row in table.SelectNodes("//tr"))
{
    HtmlNode addressNode = row.SelectSingleNode("td[2]");
    //do something with address here
    HtmlNode phoneNode = row.SelectSingleNode("td[5]");
    // do something with phone here
}

Edit2: Se você não sabe os índices das colunas que você poderia fazer a coisa toda assim. Eu não testei isso.

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("http://somewhere.com");
var tables = doc.DocumentNode.SelectNodes("//table");

foreach(var table in tables)
{
    int addressIndex = -1;
    int phoneIndex = -1;
    var headers = table.SelectNodes("//th");
    for (int headerIndex = 0; headerIndex < headers.Count(); headerIndex++)
    {
        if (headers[headerIndex].InnerText == "address")
        {
            addressIndex = headerIndex;
        }
        else if (headers[headerIndex].InnerText == "phone")
        {
            phoneIndex = headerIndex;
        }
    }

    if (addressIndex != -1 && phoneIndex != -1)
    {
        foreach (var row in table.SelectNodes("//tr"))
        {
            HtmlNode addressNode = row.SelectSingleNode("td[addressIndex]");
            //do something with address here
            HtmlNode phoneNode = row.SelectSingleNode("td[phoneIndex]");
            // do something with phone here
        }
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top