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 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: Visual Studio 2013 Express for Windows Desktop
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. Depois, 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
Imports System.text
Imports System.Net
O métodos extraiLinks e extraiImagens realizam todo o trabalho de extração.
Novamente, estamos usando o recurso oferecido pelas expressões regulares:
Para os links:
objRegEx = New Regex(“a.*hrefs*=s*(?:””(?<1>[^””]*)””|(?<1>S+))”, RegexOptions.IgnoreCase Or RegexOptions.Compiled)
Para as imagens:
objRegEx = New Regex(“img.*srcs*=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.
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
‘ Cria uma expressão regular
objRegEx = New Regex(“a.*hrefs*=s*(?:””(?<1>[^””]*)””|(?<1>S+))”, RegexOptions.IgnoreCase Or RegexOptions.Compiled)
‘ procura no HTML
objMatch = objRegEx.Match(HTML)
‘ extrai Links
While objMatch.Success
strMatch = objMatch.Groups(1).ToString
arrLinks.Add(strMatch)
objMatch = objMatch.NextMatch()
End While
‘ retorna o resultado
Return arrLinks
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 Links do HTML –  iremos obter o seguinte resultado:

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.*srcs*=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:

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
‘ Cria um atalho na pasta favoritos do usuário
Dim favoritos As String

‘ Retorna a pasta favoritos
favoritos = System.Environment.GetFolderPath(Environment.SpecialFolder.Favorites)

‘Cria um atalho baseado no titulo
Dim objWriter As StreamWriter = File.CreateText(favoritos & “” & Titulo & “.url”)

‘Escreve a URL para o arquivo
objWriter.WriteLine(“[InternetShortcut]”)
objWriter.WriteLine(“URL=” & URL)

‘ Fecha o arquivo
objWriter.Close()
Catch ex As Exception
Throw ex
End Try

End Sub
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
Source: IMASTER