Jump to content
Sign in to follow this  
electric

innerhtml retirar apenas o que esta no meio de..

Recommended Posts

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

Share this post


Link to post
Share on other 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

Edited by nelsonr

Share this post


Link to post
Share on other 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 :\

Edited by electric

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Edited by nelsonr

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Edited by nelsonr

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.