TAG HTML PORTAL NACIONAL
oi queria saber se alguem poderia me passa esse programa em delphi 7?
Pegudo, como faço para salvar uma imagem do captcha do webbrowser e carrega-lo em um picturebox? ou carregar o picturebox com a imagem direta do webbrowser sem ter q armazenar a imagem na maquina.
Cara, é impossÃvel você salvar a mesma imagem do captcha do webbrowser na máquina porque a imagem é dinâmica e muda a cada evento que aconteça na página.
Via código é impossÃvel.
Aqui eu faço assim, é um pouco complicado mas foi o jeito que eu encontrei:
1º Eu trago o form que contém o captcha para frente, usando o Form1.TopMost = True;
2º Eu faço o webrowser rolar a tela até o captcha, usando o WebBrowser.Document.Window.ScrollTo( x, y);
3º Uso o código da imagem para cortar a figura em questão e salvá-la em uma pasta chamada Captcha;
bem... o processo que eu encontrei é este.
Não sei vai atender os requisitos do seu programa, mas foi o q eu pude fazer com o meu.
Volto a comentar que, via código, não consegui [Ô]pegar[Ô] a imagem, pelo fato da mesma ser dinâmica e trocar a cada evento da página.
Espero ter ajudado.
Via código é impossÃvel.
Aqui eu faço assim, é um pouco complicado mas foi o jeito que eu encontrei:
1º Eu trago o form que contém o captcha para frente, usando o Form1.TopMost = True;
2º Eu faço o webrowser rolar a tela até o captcha, usando o WebBrowser.Document.Window.ScrollTo( x, y);
3º Uso o código da imagem para cortar a figura em questão e salvá-la em uma pasta chamada Captcha;
bem... o processo que eu encontrei é este.
Não sei vai atender os requisitos do seu programa, mas foi o q eu pude fazer com o meu.
Volto a comentar que, via código, não consegui [Ô]pegar[Ô] a imagem, pelo fato da mesma ser dinâmica e trocar a cada evento da página.
Espero ter ajudado.
Valeu Pegudo, logo mais vou testar o seu exemplo.
Voltando naquele caso de extrair os dados da pagina do portal nacional, que você havia me ajudado, acabei encontrando um problema no codigo abaixo e nao sei como resolver. Acontece que a quantidade de dados na pagina pode variar, ou seja, uma NFe pode ter 1 item, como tambem pode ter 100 itens, ai a contagem do codigo ( For A = 18 To Spans.Count - 1) vai mudar. Colocando como exemplo o case 4, ele está após os itens, se a NFe tem 1 item ele está na contagem 48 se ela tiver 4 itens o valor total vai pra contagem 54. Como posso tratar isso?
Case 4
txtValorTotal.Text = ValorRetornado
Contador = 1
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim form As HtmlElement = WebBrowser1.Document.GetElementById([Ô]form1[Ô])
Dim Spans As HtmlElementCollection = form.Document.GetElementsByTagName([Ô]span[Ô])
Dim Contador As Integer = 1
Dim ValorRetornado As String = [Ô][Ô]
WebBrowser1.Document.Window.ScrollTo(0, 300)
For A = 18 To Spans.Count - 1
If Spans.Item(A).OuterHtml.Contains([Ô]<SPAN class=linha>[Ô]) Then
ValorRetornado = Spans.Item(A).InnerText
Select Case Contador
Case 1
txtNumero.Text = ValorRetornado
Contador += 1
Case 2
txtSerie.Text = ValorRetornado
Contador += 1
Case 3
txtDataEmissao.Text = ValorRetornado
Contador += 1
Case 4
txtValorTotal.Text = ValorRetornado
Contador = 1
Exit For
End Select
End If
Next
End Sub
Voltando naquele caso de extrair os dados da pagina do portal nacional, que você havia me ajudado, acabei encontrando um problema no codigo abaixo e nao sei como resolver. Acontece que a quantidade de dados na pagina pode variar, ou seja, uma NFe pode ter 1 item, como tambem pode ter 100 itens, ai a contagem do codigo ( For A = 18 To Spans.Count - 1) vai mudar. Colocando como exemplo o case 4, ele está após os itens, se a NFe tem 1 item ele está na contagem 48 se ela tiver 4 itens o valor total vai pra contagem 54. Como posso tratar isso?
Case 4
txtValorTotal.Text = ValorRetornado
Contador = 1
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim form As HtmlElement = WebBrowser1.Document.GetElementById([Ô]form1[Ô])
Dim Spans As HtmlElementCollection = form.Document.GetElementsByTagName([Ô]span[Ô])
Dim Contador As Integer = 1
Dim ValorRetornado As String = [Ô][Ô]
WebBrowser1.Document.Window.ScrollTo(0, 300)
For A = 18 To Spans.Count - 1
If Spans.Item(A).OuterHtml.Contains([Ô]<SPAN class=linha>[Ô]) Then
ValorRetornado = Spans.Item(A).InnerText
Select Case Contador
Case 1
txtNumero.Text = ValorRetornado
Contador += 1
Case 2
txtSerie.Text = ValorRetornado
Contador += 1
Case 3
txtDataEmissao.Text = ValorRetornado
Contador += 1
Case 4
txtValorTotal.Text = ValorRetornado
Contador = 1
Exit For
End Select
End If
Next
End Sub
Cara para tentar te ajudar eu vou precisar de uma NF-e que tenha vários itens
tenta a chave 31110559106377000172550010002454421417595671, estou trabalhando pra criar um programa pra buscar todos os dados existentes no portal nacional, ai neste caso como tem mais de um item, teria que ter alguma forma tratar essa variação de itens no programa. Quero extrair todos os dados possiveis pra salvar no banco e posteriormente criar uma função pra gerar a danfe.
Bom dia,
Pegudo, essa dúvida dele também me interessa e por isso vou adiantando uma nota aqui que tem vários produtos.
52101207825777000134550010000098391111712107
Obrigado.
Pegudo, essa dúvida dele também me interessa e por isso vou adiantando uma nota aqui que tem vários produtos.
52101207825777000134550010000098391111712107
Obrigado.
Boa tarde.
LEONARDOSILVEIR, ontem o grande PEGUDO me deu um exemplo de como fazer e eu fiz algumas adaptações aqui, no exemplo que estou lhe enviando você também terá que adaptar um pouco, mas já é o começo de alguma coisa. Da forma que eu adaptei e o PEGUDO me mandou funciona da seguinte forma:
Você acessa a página com os produtos, e depois clica no botão buscar dados e eles são jogados em um datagridviewer e depois você manda gravar no seu banco.
Obrigado.
LEONARDOSILVEIR, ontem o grande PEGUDO me deu um exemplo de como fazer e eu fiz algumas adaptações aqui, no exemplo que estou lhe enviando você também terá que adaptar um pouco, mas já é o começo de alguma coisa. Da forma que eu adaptei e o PEGUDO me mandou funciona da seguinte forma:
Você acessa a página com os produtos, e depois clica no botão buscar dados e eles são jogados em um datagridviewer e depois você manda gravar no seu banco.
Obrigado.
Boa Altair o nosso Pegudo havia me passado este exemplo também, estou seguindo o mesmo caminho, o que estava faltando pra mim era a parte de buscar os itens da NFe, e com base no seu exemplo em busca-los e preencher no gridview vou conseguir extrair todos os dados da NFe. Assim que for surgindo mais duvidas vou postando...
Cara eu cheguei a consegui extrair tudo que eu queria, quando cheguei no final que fui tentar importar outra nota essa nota era com layout da 2.0, e eu fiz todo o meu projeto baseado em uma 1.00, agora tive que colocar uma rotina que verifica qual a versão do layout e depois ela importa baseado no layout.
Tópico encerrado , respostas não são mais permitidas