Ir para o conteúdo
electric

innerhtml retirar apenas o que esta no meio de..

Mensagens Recomendadas

electric

boas pessoal,

é o seguinte, tenho uma pagina que tem digamos que 100 nomes

ora estou a usar o innerhtml para o extrair para uma richtext ate ai tudo bem,

Agora, sei que no meio do html todo o que esta em comun é

_tab%22%7D">NOME</a></div><a class="uiLinkSubtle"

a minha duvida é como é que eu limpo tudo deixando apenas

nome1

nome2

nome3

e pro ai fora :)

Abraço

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Boas,

e essa estrutura é sempre igual?

Podias usar algo assim:

Dim ConteudoHTML = "_tab%22%7D"">NOME1</a></div><a class=""uiLinkSubtle""" +
				"_tab%22%7D"">NOME2</a></div><a class=""uiLinkSubtle"""
Dim matches As MatchCollection = Regex.Matches(ConteudoHTML, """>(?<nome>[\w|\d\s]*)</a></div><a class=""uiLinkSubtle")
For Each match As Match In matches
TextBox1.Text += match.Groups("nome").Value + ";"
Next

Editado por nelsonr

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
electric

Boas amigo, desde ja obrigado pela ajuda,

eu coloquei numa listbox

Dim ConteudoHTML = "_tab%22%7D"">NOME1</a></div><a class=""uiLinkSubtle""" +
							"_tab%22%7D"">NOME2</a></div><a class=""uiLinkSubtle"""
	Dim matches As MatchCollection = Regex.Matches(ConteudoHTML, """>(?<nome>[\w|\d\s]*)</a></div><a class=""uiLinkSubtle")
	For Each match As Match In matches
		ListBox1.Items.Add(match.Groups("nome").Value)
	Next

mas ao lista mostra

NOME1

NOME2

e nao os nomes que la estão no site :\

Editado por electric

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
electric

Contornei este problema,

primeiro executo esta linha

RichTextBox1.Text = Wb.document.GetElementById("pagelet_timeline_medley_friends").InnerHtml

e depois uso o teu codigo com esta alteração

Dim ConteudoHTML = RichTextBox1.Text
    Dim matches As MatchCollection = Regex.Matches(ConteudoHTML, """>(?<nome>[\w|\d\s]*)</a></div><a class=""uiLinkSubtle")
    For Each match As Match In matches
	    ListBox1.Items.Add(match.Groups("nome").Value)
    Next

Agora reparei é que o meu browser nao faz o load de tudo... para carrgar toda a pagina tenho de puxar a pagina constantemente para baixo...

alguma maneira de conseguir fazer o load completo ?

Abraços

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

O codigo que dei era so um exemplo, claro que tinhas de substituir a variavel ConteudoHTML com o html lido.

O problema é que estás a ler logo o conteúdo, sem esperar que a página esteja toda lida.

Podes colocar o teu código no evento "DocumentCompleted" que é chamado apenas quando a pagina está toda lida:

http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.documentcompleted.aspx

Ou então, em vez de usares o componente webbrowser, podes usar assim:

'
Dim resp As System.Net.WebResponse = System.Net.WebRequest.Create("http://website").GetResponse
'
Dim ConteudoHTML As String
Using sr As System.IO.StreamReader = New System.IO.StreamReader(resp.GetResponseStream)
   ConteudoHTML = sr.ReadToEnd
End Using
'  
Dim matches As MatchCollection = Regex.Matches(ConteudoHTML, """>(?<nome>[\w|\d\s]*)</a></div><a class=""uiLinkSubtle")
For Each match As Match In matches
   ListBox1.Items.Add(match.Groups("nome").Value)
Next

Editado por nelsonr

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
electric

mas aqui neste caso a pagina mostra um determinado numero de dados,

so quando fazes scrooldown é que te mostra mais um X de dados...

até nao teres mais

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Então a situação é outra, isso provavelmente está a capturar um evento de scroll para chamar uma função que preenche a pagina com mais informação.

Terás de descobrir qual o evento e usar o InvokeScript como está no nesta página:

http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.objectforscripting.aspx

Editado por nelsonr

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.