VB .NET
- Tratando código HTML
(Extraindo Links e
Imagens) - II
![]() |
No artigo de hoje vou mostrar como podemos realizar o tratamento do código HTML obtido a partir de uma web page, realizando tarefas como obter o HTML, converter para texto, extrair links e extrair imagens. |
Na primeira parte do artigo mostrei como obter o HTML de páginas web e converter o código para texto e agora veremos como extrair links e imagens do HTML obtido.
Recursos usados :
Extraindo Imagens e links do código HTML
Abra o projeto Tratando_HTML criado no artigo anterior no VS 2013 Express for Windows desktop e a seguir clique no menu PROJECT.
Seleciona a opção PROJECT - Add Windows Forms e aceite o nome padrão Form2.vb;
e a seguir, a partir da ToolBox, inclua no formulário os controles abaixo:
1 TextBox - txtURL
1 Button - btnHTML
1 TextBox - txtHTML , Multiline = True, ScrollBars =Both
2 Buttons - btnExtraiLinks e btnExtraiImagens
2 ListBox - lbLinks e lbImagens
Disponha os controles conforme o leiaute da figura abaixo:
![]() |
|
Os namespaces usados o projeto
são:
Imports
System.Text.RegularExpressions O métodos extraiLinks e extraiImagens realizam todo o trabalho de extração. Novamente estamos usando o recurso oferecido pelas expressões regulares: 1- para os links: objRegEx = New Regex("a.*href\s*=\s*(?:""(?<1>[^""]*)""|(?<1>\S+))", RegexOptions.IgnoreCase Or RegexOptions.Compiled) 2- para as imagens: objRegEx = New Regex("img.*src\s*=\s*(?:""(?<1>[^""]*)""|(?<1>\S+))", RegexOptions.IgnoreCase Or RegexOptions.Compiled) |
O código do botão para obter o HTML da página é igual ao usado no item deste artigo (método pegaHTML() ) e portanto eu não vou repetir aqui esse código.
1- Extrair links do HTML
No evento Click do botão - Extrair Links do HTML - inclua o código abaixo:
Private Sub btnExtraiLinks_Click(sender As Object, e As EventArgs) Handles btnExtraiLinks.Click
Dim contador As Integer
Try
Dim arrLinks As ArrayList = extraiLinks(txtHTML.Text)
' extrai os links
For contador = 0 To arrLinks.Count - 1
lbLinks.Items.Add(arrLinks(contador).ToString)
Next
Catch ex As Exception
MessageBox.Show(" Erro : " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
No código acima estamos usando o método extraiLinks() passando o HTML retornado da página web.
O código deste método é visto abaixo:
Public Function extraiLinks(ByVal HTML As String) As ArrayList Dim objRegEx As Regex Dim objMatch As Match Dim arrLinks As New ArrayList Dim strMatch As String Try |
Executando o projeto, acessando uma página web e obtendo o seu código HTML; após clicar no botão de comando - Extrair Links do HTML - iremos obter o seguinte resultado :
![]() |
2- Extrair Imagens do HTML
No evento Click do botão - Extrair Imagens do HTML - inclua o código abaixo:
Private Sub btnExtraiImagens_Click(sender As Object, e As EventArgs) Handles btnExtraiImagens.Click
Dim contador As Integer
Try
Dim arrImagens As ArrayList = extraiImagens(txtHTML.Text)
' extrai as imagens
For contador = 0 To arrImagens.Count - 1
lbImagens.Items.Add(arrImagens(contador).ToString)
Next
Catch ex As Exception
MessageBox.Show(" Erro : " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
No código acima estamos usando o método extraiImagens() passando o HTML retornado da página web.
O código deste método é visto abaixo:
Public Function extraiImagens(ByVal HTML As String) As ArrayList Dim objRegEx As Regex Dim objMatch As Match Dim arrImagens As New ArrayList Dim strMatch As String Try ' Cria uma expressão regular objRegEx = New Regex("img.*src\s*=\s*(?:""(?<1>[^""]*)""|(?<1>\S+))", RegexOptions.IgnoreCase Or RegexOptions.Compiled) ' procura no HTML objMatch = objRegEx.Match(HTML) ' Extrai as imagens While objMatch.Success strMatch = objMatch.Groups(1).ToString arrImagens.Add(strMatch) objMatch = objMatch.NextMatch() End While ' retorna o resultado Return arrImagens Catch ex As Exception Throw ex End Try End Function |
Executando o projeto, acessando uma página web e obtendo o seu código HTML; após clicar no botão de comando - Extrair Imagens do HTML - iremos obter o seguinte resultado :
3 - Criando um atalho nos Favoritos
Você pode facilmente criar atalhos nos seus Favoritos usando código VB.NET.
A função CriarAtalho, cujo código é exibido a seguir, faz exatamente isto. Ela deve receber o título que será usado para nomear o atalho criado e a URL para acessá-lo.
O namespace usado é System.IO de onde usamos a
classe StreamWriter.
Também estamos usando a classe Environment para obter a pasta favoritos e classe File para criar o atalho.
Public Sub CriarAtalho(ByVal
Titulo As String, ByVal URL As String)
Try Dim favoritos As String ' Retorna a pasta favoritos favoritos = System.Environment.GetFolderPath(Environment.SpecialFolder.Favorites)
Dim objWriter As StreamWriter = File.CreateText(favoritos & "\" & Titulo & ".url")
objWriter.WriteLine("[InternetShortcut]") objWriter.WriteLine("URL=" & URL)
objWriter.Close() Catch ex As Exception Throw ex End Try
|
Assim para criar um atalho nos favoritos para o site do Macoratti podemos usar a função fazendo a seguinte chamada:
CriarAtalho("Macoratti", "http://www.macoratti.net")
Espiando a pasta Favoritos verificamos o atalho criado:
![]() |
Você pode
implementar da forma que desejar usando formulários Windows e o seu talento...
Aguarde em
breve mais artigos sobre os novos recursos VB.NET. Até
breve...
Pegue o projeto completo aqui :
Tratando_HTML.zip
Todo aquele que prevarica, e não persevera na doutrina
de Cristo, não tem a Deus. Quem persevera na doutrina de
Cristo, esse tem tanto ao Pai como ao Filho.
2 João 1:9
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
TreeView - Arrastar e Soltar (Drag and Drop) - Macoratti.net