• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zoep

Retirar informação de uma página

24 mensagens neste tópico

Boa Tarde pessoal, tenho uma duvida...

Numa página web, para agente correr a página e tirar uma certa informação, é mais facil passar o codigo HTML para um *.txt ou é mais facil retirar a informação logo a partir da página?

Eu uso um controlo webbrowser para lhe retirar o seu código fonte, mas depois não consigo selecionar o que eu quero para mandar para um textbox.

Esta é a página:http://www.bpiinvestimentos.pt/Mercados/QuadroCotacoesIndexantes.asp

E dentro dessa tabela, gostava de retirar apenas, todos os dados referidos ao EURIBOR de 12 Meses!

URGENTÍSSIMO! (Mesmo que não saibam, metam que não saibam, ao menos sei que leram. Obrigado)[/url]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não ha maneira de retirar isso sem ser a martelada por manipulação de strings... o que e um metodo pouco tradicional porque a qualquer altura eles alteram o esquema e deixa de funcionar :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tem que haver, a programação e o limite da imaginação.

tambem gostava de saber esse codigo, seria-me bastante util para ajudar um colega meu.

abraço:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim..a imaginação não tem limite...... tanto a quem de programa deste lado...como a que programa do lado da página que queres aceder... lol

100% com Hellblazer

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim, mas eu ficava contente só por conseguir fazer ali como a página está nesta altura!

Amnhã posto o código que já tenho, tá com um erro q nao consigo resolver!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tem que haver, a programação e o limite da imaginação.

tambem gostava de saber esse codigo, seria-me bastante util para ajudar um colega meu.

abraço:)

Tem certos limites sim... se nao tiveres um ponto por o qual te orientes nao podes fazer nada :P

e como dizer a um computador diz-me o caminho de A a B indicando apenas a localizaçao do ponto B :D o computador segue ordens que tu lhe dás... se algo foge a regra que tu das ele nao pensa por ele próprio :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Anyway..

Fiz no bloco de notas... se nao estiver certo e nao conseguires dar a volta avisa....

Dim intTemp as integer
Dim strEURIBOR as string

intTemp = strHTML.IndexOf("<tr class="Azul">")
strHTML = strHTML.Substring(intTemp)
intTemp = strHTML.IndexOf("<table")
strHTML = strHTML.Substring(intTemp)
intTemp = strHTML.IndexOf("</font></td></tr></table></td></tr></table>") + 43
strEURIBOR = strHTML.Substring(0, intTemp)

Nota: strHTML e o source code que dizes que ja tens

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

HellBlazer, eu fiz assim:

Imports System.IO
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        WebBrowser1.Navigate("http://www.bpiinvestimentos.pt/Mercados/QuadroCotacoesIndexantes.asp")

        Dim stream As New IO.StreamWriter("C:\teste.txt", IO.FileMode.OpenOrCreate)
        stream.WriteLine("")
        stream.Close()

    End Sub

    Public Function removerTags(ByVal HTML As String) As String
        'Função para remover TAGS HTML
        Return System.Text.RegularExpressions.Regex.Replace(HTML, "<[^>]*>", " ")
    End Function

    Private Sub BT_retirarinfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_retirarinfo.Click

    End Sub

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        TXT_codHTML.Text = WebBrowser1.DocumentText

    End Sub

    Private Sub TXT_codHTML_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TXT_codHTML.TextChanged
        TXT_semTAGS.Text = removerTags(TXT_codHTML.Text)
    End Sub

    Private Sub TXT_semTAGS_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TXT_semTAGS.TextChanged
        'guarda o texto já sem as TAGS HTML
        Dim objStream As New System.IO.FileStream("C:\teste.txt", IO.FileMode.OpenOrCreate)
        Dim Arq As New System.IO.StreamWriter(objStream)
        Arq.WriteLine(TXT_semTAGS.Text) 'guarda o que está na textbox num ficheiro de texto
        Arq.Close()
    End Sub
End Class

Neste momento, ele vai á página que disse, tira o código HTML, tira-lhe as TAGS e volta a guardar sem as tags.

Agora preciso fazer de maneira a ele encontrar no meio do .txt esta "frase":

(um bocado do que guardou sem as tags)

 O que �?   
   Politica Execu��o Ordens   
   Politica Conflitos Interesses   
   Perguntas Frequentes   
   Manual do Investidor   
     

     	


	   

		  P�gina Inicial  >  Investimento  >  Mercados  >   Cota��es Indexantes   




					      Indexante  Prazo  Data  Valor  M�dia do �ltimo m�s     EURIBOR    1 Semana    10/03/2009    1,054%    -      EURIBOR    1 M�s    10/03/2009    1,325%    1,628%      EURIBOR    3 Meses    10/03/2009    1,687%    1,943%      EURIBOR    6 Meses    10/03/2009    1,817%    2,034%      EURIBOR    12 Meses    10/03/2009    1,939%    2,135%      LIBOR    1 M�s    10/03/2009    1,312%    -      LIBOR    3 Meses    10/03/2009    1,686%    -      LIBOR    6 Meses    10/03/2009    1,828%    -      LIBOR    12 Meses    10/03/2009    1,951%    -      EONIA    -    10/03/2009    1,335%    -      TBA    -    10/03/2009    1,830%    -      REFIRATE *    -    09/03/2009    1,500%    - 

e preciso que ele retire apenas :  EURIBOR    12 Meses    10/03/2009    1,939%    2,135%

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Imports System.Text.RegularExpressions

        Dim strEuribor As String
        Dim intTemp As Integer
        Dim regex As New Regex("\s{2,}")

        strText = regex.Replace(strText.Trim(), " ")

        intTemp = strText.IndexOf("EURIBOR 12 Meses")

        strEuribor = strText.Substring(intTemp)
        strEuribor = strEuribor.Substring(0, strEuribor.IndexOf("LIBOR"))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

HellBlazer, se funcionar, pago-te um café :thumbsup:

declaro strText como string? ou como path para o ficheiro?

Declarei como string e deu-me este erro "A referência de objecto não foi definida como uma instância de um objecto." nesta linha "strText = regex.Replace(strText.Trim(), " ")"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o strText supostamente e o texto que tu mostras-te la em cima sem tags :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O mesmo erro :S

Meti o codigo assim

    Private Sub BT_retirarinfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_retirarinfo.Click
        Dim strEuribor As String
        Dim intTemp As Integer
        Dim regex As New Regex("\s{2,}")


        var_semtags = regex.Replace(var_semtags.Trim(), " ")

        intTemp = var_semtags.IndexOf("EURIBOR 12 Meses")

        strEuribor = var_semtags.Substring(intTemp)
        strEuribor = strEuribor.Substring(0, strEuribor.IndexOf("LIBOR"))

        TXT_pretendido.Text = strEuribor

O erro continua a ser este "A referência de objecto não foi definida como uma instância de um objecto"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

HellBlazer, quando qizeres ir beber o cafézinho diz :) Eu pago-te! Ou uma imperialzinha :thumbsup:

Obrigado, e RESOLVIDO!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

LOL obrigado :thumbsup: podias e por no nome do topico resolvio que eu ja fico contente :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já tá. HellBlazer, só mais uma coisinha.

Quando corro o programa, fica assim:

my.php?image=euribor.jpg

Se eu quizer dar mais uns espaços entre o Euribor, o 12 meses, o 11/03/2009, o 1,932% e o 2.135% como é que faço?

Em vez de ficar

Euribor 12 Meses 11/03/2009 1,932% 2,135% aparecer Euribor  12 Meses  11/03/2009  1,932%  2,135%??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Meti Assim

var_semtags = regex.Replace(var_semtags.Trim(), " ", " ")

e da-me erro na linha:"strEuribor = var_semtags.Substring(intTemp)" e o erro é este:

"StartIndex não pode ser menor que zero. Nome do parâmetro: startIndex"

:bag:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens de por depois de ja teres so a parte do euribor 12 meses se nao vai dar erro que eu tirei os espaços a mais depreposito para encontrar esse traço de texto :thumbsup:

0

Partilhar esta mensagem


Link 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