Mineração de Dados: Extraindo tabelas de páginas da Web
Autor: Brazil SFE | Publicado: 2017-02-06T10:15:00-08:00


Mineração de Dados: Extraindo tabelas de páginas da Web



Como importar uma tabela HTML para a planilha do Excel, quando se consulta uma página na Web? Se qualquer site tem dados em forma de tabelas, usaremos a opção Consulta na Web do&nbsp;Excel&nbsp;para importá-lo,usando-o como um navegador. Neste ponto clicamos com o botão direito na Tabela da Web e escolheremos a opção "Exportar para o Microsoft Excel".&nbsp;

Esta opção de consulta na Web não funcionará corretamente com algum site. Neste artigo veremos como fazer uma Mineração de Dados&nbsp;apenas com o Excel.&nbsp;

Este breve artigo explicará como importar o conteúdo HTML. Será atribuído como um objeto HTMLFile com mais opções de recuperação das tags HTML.

Depois de obtermos o conteúdo da página Web, teremos as respectivas&nbsp;tags relacionadas à tabela como &lt;Table&gt;, &lt;TR&gt; e &lt;TD&gt;.

A última etapa será processar cada linha e célula nessa tabela e transferi-la para a Planilha.

Sub HTML_Table_To_Excel()
&nbsp; &nbsp; Dim htm As Object
&nbsp; &nbsp; Dim Tr As Object
&nbsp; &nbsp; Dim Td As Object
&nbsp; &nbsp; Dim Tab1 As Object

&nbsp; &nbsp; 'Replace the URL of the webpage that you want to download
&nbsp; &nbsp; Web_URL = VBA.Trim(Sheets(1).Cells(1, 1))

&nbsp; &nbsp; 'Create HTMLFile Object
&nbsp; &nbsp; Set HTML_Content = CreateObject("htmlfile")

&nbsp; &nbsp; 'Get the WebPage Content to HTMLFile Object
&nbsp; &nbsp; With CreateObject("msxml2.xmlhttp")
&nbsp; &nbsp; &nbsp; &nbsp; .Open "GET", Web_URL, False
&nbsp; &nbsp; &nbsp; &nbsp; .send
&nbsp; &nbsp; &nbsp; &nbsp; HTML_Content.Body.Innerhtml = .responseText
&nbsp; &nbsp; End With

&nbsp; &nbsp; Column_Num_To_Start = 1
&nbsp; &nbsp; iRow = 2
&nbsp; &nbsp; iCol = Column_Num_To_Start
&nbsp; &nbsp; iTable = 0

&nbsp; &nbsp; 'Loop Through Each Table and Download it to Excel in Proper Format
&nbsp; &nbsp; For Each Tab1 In HTML_Content.getElementsByTagName("table")
&nbsp; &nbsp; &nbsp; &nbsp; With HTML_Content.getElementsByTagName("table")(iTable)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; For Each Tr In .Rows
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; For Each Td In Tr.Cells
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Sheets(1).Cells(iRow, iCol).Select
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Sheets(1).Cells(iRow, iCol) = Td.innerText
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; iCol = iCol + 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Next Td
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; iCol = Column_Num_To_Start
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; iRow = iRow + 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Next Tr
&nbsp; &nbsp; &nbsp; &nbsp; End With
&nbsp; &nbsp; &nbsp; &nbsp; iTable = iTable + 1
&nbsp; &nbsp; &nbsp; &nbsp; iCol = Column_Num_To_Start
&nbsp; &nbsp; &nbsp; &nbsp; iRow = iRow + 1
&nbsp; &nbsp; Next Tab1

&nbsp; &nbsp; MsgBox "Process Completed"

End Sub


Limitações

Em muitos sites, mesmo o Facebook, Twitter&nbsp;e páginas web, aparecerão tabelas. Mas elas estão incorporadas dentro das tags DIV e SPAN. É melhor usar as APIs do Facebook, Twitter ao invés de apenas confiar nas tags HTML.



Deixe seus comentários, compartilhe este artigo!



brazilsalesforceeffectiveness@gmail.com

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;