 VB .NET  
- Tratando código HTML
(Extraindo Links e 
Imagens) - II
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
 
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 Facebook
  
 Compartilhe no Twitter
 
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