• 0
Sign in to follow this  
expl0iter

Copiar uma coisa do código fonte da pagina

Question

Ola,ao ver o código fonte de uma pagina,eu encontrei a seguinte coisa:

 

"email":"[email protected]"



Tem como eu fazer um botão para que o que esta entre as duas ultimas aspas (no caso o email) apareca em um textbox?
Obrigado desde já =)

Obs:no caso com um webbrowser no projeto.
Obs²:è visual basic

Até agora eu tenho um código que baixa o código fonte e coloca ele em uma texbox.

Edit 4:o valor que eu quero esta entre 

<script type="text/javascript">
DADOS
</script>

Edited by expl0iter

Share this post


Link to post
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Sim, use os métodos IndexOf para achar a posição de uma string em outra e depois Substring para pegar apenas uma parte.

Abraços!

Share this post


Link to post
Share on other sites
  • 0
Em 19/01/2017 at 13:27, Graymalkin disse:

Sim, use os métodos IndexOf para achar a posição de uma string em outra e depois Substring para pegar apenas uma parte.

Abraços!

Poderia me dar um exemplo? 
Abraços!

Share this post


Link to post
Share on other sites
  • 0
54 minutos atrás, expl0iter disse:

Poderia me dar um exemplo? 
Abraços!

Não to conseguindo editar o post acima então vai nesse mesmo.
Eu consegui usar o método IndexOf e Substring pra pegar a parte do email,porém não vem só a parte que eu quero,vem o resto da page toda.

O código que estou usando é:

      Dim s As String = RichTextBox1.Text                                               //(RichTextBox contém o código fonte)
        Dim x As Integer = s.IndexOf("ips.setSetting( 'date_format'")       //(Parte do código que eu quero,no caso o email)
        Dim parte As String = s.Substring(x)                                             //Defino uma substring 
        TextBox1.Text = parte                                                                   //Jogo o valor encontrado pra uma txtbox
        If TextBox1.Text.Contains("date_format") Then                           //Se o valor conter date_format 
            MsgBox(parte)                                                                         //MsgBox com o conteúdo encontrado
        Else
            MsgBox("Não contém")


O problema é que:quando acha,na MsgBox não aparece somente o que eu quero,aparece todo o resto do código fonte junto
eu queria saber se tem um modo de limitar o IndexOf fazendo com que ele procure de X parte até Y
por exemplo: de "ips.setSetting( 'date_format" até o proximo " ; "
Digamos que o código fonte tenha 

ips.setSetting( 'date_format', jQuery.parseJSON('"dd-mm-yy"') );

Eu queria fazer que o IndexOf se limitasse de "ips.setSetting( 'date_format" até  "y"') );"

Acho que deu pra explicar né? rs

Abraços!

Share this post


Link to post
Share on other sites
  • 0

Sim, agora está mais claro. Então, na verdade o que você tem que limitar é a parte a ser extraída, ou seja, a substring. Se você não informar quantos caracteres você quer, este método pega dali em diante. E o IndexOf também pode ter um ponto de início. Veja:

Dim posini, posfim As Integer
Dim parte As String = ""
Dim s As String = RichTextBox1.Text

posini = s.IndexOf("ips.setSetting( 'date_format'")

If posini >= 0 Then
	posfim = s.IndexOf(";", posini)
	
	If posfim > posini Then
		parte = s.Substring(posini, posfim - posini + 1)
	End If
End If

If parte.Contains("date_format") Then
	MessageBox.Show(parte)
Else
	MessageBox.Show("Não contém")
End If

Abraços!

Share this post


Link to post
Share on other sites
  • 0
41 minutos atrás, Graymalkin disse:

Sim, agora está mais claro. Então, na verdade o que você tem que limitar é a parte a ser extraída, ou seja, a substring. Se você não informar quantos caracteres você quer, este método pega dali em diante. E o IndexOf também pode ter um ponto de início. Veja:

Dim posini, posfim As Integer
Dim parte As String = ""
Dim s As String = RichTextBox1.Text

posini = s.IndexOf("ips.setSetting( 'date_format'")

If posini >= 0 Then
	posfim = s.IndexOf(";", posini)
	
	If posfim > posini Then
		parte = s.Substring(posini, posfim - posini + 1)
	End If
End If

If parte.Contains("date_format") Then
	MessageBox.Show(parte)
Else
	MessageBox.Show("Não contém")
End If

Abraços!

Nossa,muito obrigado!
Agora me apareceu outra dúvida rs,se não estiver te incomodando responde por favor:
Nesse caso aí eu só baixo o código fonte,beleza. o problema é que o código fonte do email precisa efetuar um login antes se não os dados não aparecem no código fonte (meio óbvio),o que acontece é que eu coloquei um WebBrowser pra logar,e assim eu achei que o código fonte baixado ia ser o mesmo do WebBrowser mas infelizmente não é.
Tem como eu baixar o código fonte do WebBrowser?
obs:o InnerHtml só mostra as palavras que tem na pagina e não o código igual ao DownloadString
Obrigado novamente :D
Abraços!

Share this post


Link to post
Share on other sites
  • 0

A propriedade InnerText é que mostra apenas o texto (no caso, as palavras), e InnerHtml deveria ter o código-fonte da página. Esse é o caminho certo (o que você está fazendo mesmo, usando o WebBrowser), se é necessário fazer login antes. Utilizo esse recurso em 2 sistemas para fazer login e obter dados em diferentes fornecedores. Note apenas que pode levar um tempo até que InnerHtml seja preenchido, de acordo com o carregamento da página. E repare também que esta propriedade existe para cada elemento da página, então vai depender de onde está o que você deseja, como, por exemplo em wb.Document.Body.InnerHtml, onde "wb" é o WebBrowser e você está pegando o código da tag BODY. Se você tiver o ID ou a tag do elemento que precisa, você pode usar os métodos GetElementById e GetElementsByTagName para obtê-los também (e talvez nem precisará desse processamento de strings do exemplo acima).

E o método DownloadString a que você se refere é da classe WebClient, certo? Neste caso, você não tem como fazer o login, e o que será baixado é o código da página sem qualquer tipo de processamento (o que não vai rolar, já que você precisa fazer o login antes).

Abraços!

Share this post


Link to post
Share on other sites
  • 0
19 horas atrás, Graymalkin disse:

A propriedade InnerText é que mostra apenas o texto (no caso, as palavras), e InnerHtml deveria ter o código-fonte da página. Esse é o caminho certo (o que você está fazendo mesmo, usando o WebBrowser), se é necessário fazer login antes. Utilizo esse recurso em 2 sistemas para fazer login e obter dados em diferentes fornecedores. Note apenas que pode levar um tempo até que InnerHtml seja preenchido, de acordo com o carregamento da página. E repare também que esta propriedade existe para cada elemento da página, então vai depender de onde está o que você deseja, como, por exemplo em wb.Document.Body.InnerHtml, onde "wb" é o WebBrowser e você está pegando o código da tag BODY. Se você tiver o ID ou a tag do elemento que precisa, você pode usar os métodos GetElementById e GetElementsByTagName para obtê-los também (e talvez nem precisará desse processamento de strings do exemplo acima).

E o método DownloadString a que você se refere é da classe WebClient, certo? Neste caso, você não tem como fazer o login, e o que será baixado é o código da página sem qualquer tipo de processamento (o que não vai rolar, já que você precisa fazer o login antes).

Abraços!

Consegui utilizando "WebBrowser1.DocumentText"
Obrigado por tudo,código 100% funcional!
Abraços :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this