Acessar elementos de uma página HTML

.NET

15/02/2013

Olá, gente...
eu tenho aqui uma página web que eu estou sempre precisando acessar e tirar dela as mesmas informações. Por exemplo, a página tem um título e um substítulo, como no código a seguir.
...
<h1 id="hTitulo">título aqui</h1>
<h2 id="hSubTitulo">subtítulo aqui</h2>
...

Só que isso é um site na web, eu acesso pelo endereço normalmente.

Aí eu gostaria de automatizar minha tarefa, fazendo uma aplicação (de preferência Windows Forms, mas pode ser ASP.net) em que eu informasse o endereço e já obtivesse o valor dessas tags.

Existe alguma classe ou função em C# pra eu ler uma URL e obter os valores dos elementos da página?

Obrigada desde já.
Rachel Andrade

Rachel Andrade

Curtidas 0

Respostas

Caio Uechi

Caio Uechi

15/02/2013

nossa..

interessante o que você está querendo fazer...

mas tenho uma pequena ideia de como 'começar'...

a gente sabe que as requisições são por HTTP, e com certeza você faria uma requisição com determinada URL, e logo em seguida receberia um response HTTP com um POST com os dados do site (imagino).

puxe o FIDDLER, e veja os dados recebidos, ve se vc consegue achar algum dado com o title e head.

(posso ter viajado na resposta, + eu começaria assim, tentaria enxergar o site pela mesma visão do FIDDLER)

GOSTEI 0
Robson Alves

Robson Alves

15/02/2013

Você também pode utilizar a classe WebClient.

http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

Ele baixa toda a informações a partir de um link. Possibilita também efetuar um post em uma página (se fuçar bem).

GOSTEI 0
Rachel Andrade

Rachel Andrade

15/02/2013

Oi, Caio. Primeiramente obrigada pela resposta.
Ocorre que eu sou iniciante ainda, principalmente com web, então acho que até entendi os passos que você falou, mas não faço ideia de como implementar isso em C# =(
Você teria algum código ou saberia que classes eu devo e posso usar para isso?
Obrigada.
GOSTEI 0
Rachel Andrade

Rachel Andrade

15/02/2013

Robson, obrigada pela dica.
Vou dar uma olhada nesse link e pesquisar sobre essa classe.
Assim que tiver algum resultado, volto aqui para compartilhar com vocês.
Grata.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

15/02/2013

Oi, Rachel, conseguiu resolver a questão?
GOSTEI 0
Edson Oliveira

Edson Oliveira

15/02/2013

Esse é um jeito simples, é so colocar um componente browser no form e pesquisar.

webBrowser1.Url = new Uri("https://www.devmedia.com.br/forum/acessar-elementos-de-uma-pagina-html/434718");

HtmlElement oHtmlElement = webBrowser1.Document.ActiveElement.All.OfType<HtmlElement>().Where(c => c.Id != null && c.Id.IndexOf("maintable") > -1).FirstOrDefault();

Console.Write(webBrowser1.Document.Title);
Console.Write(oHtmlElement);
GOSTEI 0
Rachel Andrade

Rachel Andrade

15/02/2013

Pessoal, desculpem a demora. Encontrei um método para obter o conteúdo da página em forma de texto. Assim que chegar em casa, passo pra vocês.
Grata.
GOSTEI 0
Rachel Andrade

Rachel Andrade

15/02/2013

Gente, perdão pela demora. Resolvi isso fazendo a mesma coisa que esse autor fez nesse artigo: [url]https://www.devmedia.com.br/consultando-endereco-por-cep-em-c/28061[/url].
Obtive o conteúdo da página e use uma expressão regular.

Obrigada a todos =)
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

15/02/2013

Tudo bem, Rachel. O importante é que você teve a consideração de voltar e compartilhar com todos a solução.
Obrigado pelo retorno.
Estou marcando o tópico como Concluído.
GOSTEI 0
POSTAR