Free cookie consent management tool by TermsFeed Policy Generator

How to do Web Scraping with Python in SQL Server in 7 steps

Como executar a técnica de garimpar dados na internet conhecida como Web Scraping utilizando script Python no SQL Server

 

Introdução

Com o aumento significativo da demanda por análise de dados, ocorre o aumento da necessidade de extrair informações das páginas da web de forma mais eficiente.

Web scraping, ou garimpagem na web, é uma técnica usada por empresas e pesquisadores para obter informações úteis dos sites.

Esse processo pode ser demorado quando executado manualmente, mas felizmente, discutiremos nesse artigo como você podemos executar o script Python no SQL Server para realizar esse trabalho com rapidez. 

Então, se você está procurando uma maneira eficaz de capturar informações cruciais sem navegar manualmente por centenas de páginas na web, continue lendo, e assista ao vídeo!

O que é web scraping?

A raspagem da Web, também conhecida como garimpagem na Web ou extração de dados na Web, é o processo de coletar conteúdo e dados da internet com objetivo de armazenar e obter informação relevante.

Podemos executar manualmente, copiando e colando esses dados para uma planilha ou documento, pois essas páginas não disponibilizam meios para download direto dos dados, ou podemos executar automaticamente com a ajuda de um programa de software. 

Existem muitos motivos pelos quais alguém necessita extrair dados de um site. Por exemplo, uma empresa pode querer rastrear informações de preços em sites concorrentes ou uma organização governamental pode querer coletar dados sobre gastos públicos.

Existem dois tipos principais de web scraping: estruturado e não estruturado.

A extração estruturada envolve a extração de dados organizados em um formato predefinido, como uma tabela de banco de dados e não estruturada envolve a extração de dados que não estão organizados em nenhum formato específico, como o texto de um artigo, ou postagem em rede social.

Por que usar Python para web scraping?

 

Python é uma linguagem de programação poderosa que é amplamente usada em muitos setores atualmente.

É fácil de aprender para os iniciantes e possui muitos módulos e bibliotecas gratuitas que agilizam o desenvolvimento de diversas soluções, da análise de dados ao aprendizado de máquina.

Para web scraping, o Python possui bibliotecas (como BeautifulSoup) que facilitam a análise de HTML e a extração dos dados necessários, e podemos integrá-lo no SQL Server utilizando o pacote SQL Server Machine Learning Services e armazenar os dados extraídos para análise posterior.

Configurando o ambiente Python no SQL Server

O Python não é instalado por padrão no SQL Server, acesse o vídeo do canal "Como Executar Script Python no SQL Server", lá veremos como podemos instalá-lo na instância do seu banco de dados SQL Server, e como podemos executar essa linguagem integrada ao T-SQL.

Para o web scraping, precisamos instalar novos pacotes, ou bibliotecas do Python utilizando a linha de comando no servidor em que o SQL Server está instalado.

Identifique o caminho para encontrar o aplicativo 'pip' conforme a versão do seu banco de dados, nesse artigo e no vídeo estamos utilizando o SQL Server 2019.

cd C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERPYTHON_SERVICESScripts

Conheça um pouco mais sobre os pacotes necessários, atráves da página PyPi.org (requests, BeautifulSoup, html5lib e lxml) e execute o código abaixo para executar a instalação:

pip install requests
pip install bs4
pi install html5lib
pip install lxml

É importante entender que os pacotes podem depender de outros pacotes no momento da instalação, e está condicionado com a versão do Python instalada do SQL Server

Quando a instalação estiver concluída, abriremos uma nova janela de consulta no SQL Server Management Studio, ou no Azure Data Studio, para executar o nosso código Python.

Criando um script de Web Scraping

Antes de começarmos, vamos dar uma olhada nos dados que iremos coletar.

Estaremos copiando os dados da página macrotrends.net, onde coletaremos os valores históricos da cotação na bolsa de valores da empresa Microsoft, contendo a média anual, o valor de abertura e fechamento do ano, entre outros.

Agora que sabemos quais dados iremos coletar, vamos dar uma olhada em como criar o script:

Definimos a variável T-SQL de nome '@pscript' do tipo de dados NVARCHAR que irá receber o script Python, e começamos a importar as bibliotecas necessárias.

Também importaremos a biblioteca pandas para armazenar os dados extraídos em um DataFrame.

/* 1 Importar os módulos python */
DECLARE @pscript NVARCHAR(MAX);

SET @pscript = N'

import pandas as pd # importar para criar o dataframe 

import requests # importar para consulta web 

from bs4 import BeautifulSoup as bs # importar para ler html 
'

Estaremos adicionando ao texto do script atual, o uso da biblioteca requests para fazer requisições HTTP, e a biblioteca BeautifulSoup para analisar a resposta HTML, definindo a URL que queremos extrair os dados. 

/* 2. Obter Texto HTML BeatifulSoup */ 

SET @pscript = @pscript + N' 

url = "https://www.macrotrends.net/stocks/charts/MSFT/microsoft/stock-price-history" 

html_data = requests.get(url).text # consulta para a página de internet 

beautiful_soup = bs(html_data, "html5lib") # ler e converter html em objetos 

'

Depois de obter a resposta HTML, podemos extrair os dados de que precisamos usando seletores CSS ou expressões XPath.

/* 3. Obter e identificar a tabela desejada */

SET @pscript = @pscript + N'

tabelas = beautiful_soup.find_all("table")

for id, tabela in enumerate(tabelas):

    if ("Historical Annual Stock Price Data" in str(tabela)):

        tabela_id = id      # obter o índice da tabela

'

Agora, armazenaremos os dados extraídos em um DataFrame 

/* 4. Cria Dataframe */

SET @pscript = @pscript + N'

table_data = pd.DataFrame(columns=["Ticker", 

"Year", "Average", "Open", 

"High", "Low", "Close"])

'
/* 5. Preencher Dataframe com valores da tabela */

SET @pscript = @pscript + N'

for linha in tabelas[tabela_id].tbody.find_all("tr"):

    coluna = linha.find_all("td")

    if (coluna !=[]):

        year = coluna[0].text

        average = coluna[1].text

        open = coluna[2].text

        high = coluna[3].text

        low = coluna[4].text

        close = coluna[5].text

       

        table_data = table_data.append(

        {"Ticker": "MSFT" ,

        "Year" : year, 

        "Average" : average, 

        "Open" : open, 

        "High" : high, 

        "Low" : low, 

        "Close" : close}, ignore_index=True)

'

Disponibilizamos o resultado do Dataframe para saída do T-SQL

/* 6. Disponibilizar o resultado */

SET @pscript = @pscript + N'

OutputDataSet = table_data

'

E por fim, o código T-SQL para executar o script Python contido na variável '@pscript'

Execute sp_execute_external_script
@language = N'Python',
@script = @pscript
WITH RESULT SETS(

    ("Ticker" varchar(10),

    "Year" int, "Average" float, "Open" float,

    "High" float, "Low" float, "Close" float)

); -- nomes das colunas

Executando Web Scraping script

Assim, com nosso script Python pronto, existem apenas mais algumas etapas para executá-lo no SQL Server. Primeiro, você precisará criar um novo banco de dados no SQL Server, caso já não tenha um disponível. 

Podemos utilizar o SQL Server Management Studio, ou o Azure Data Studio para isso, executando o seguinte comando SQL:

CREATE DATABASE [WebScraping]

Com o banco de dados criado, você precisa criar uma tabela para armazenar os dados:

USE [WebScraping] 

CREATE TABLE [dbo].[Stock_Price_History]

( 

[id] int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, 

[Year] int NOT NULL, 

[Average] float NOT NULL,

[Open] float NOT NULL,

[High] float NOT NULL,

[Low] float NOT NULL,

[Close] float NOT NULL

) 

GO

Com a tabela criada, você está pronto para executar o script Python, mas antes de fazer isso, você precisa fazer uma alteração.

Na linha anterior do código "Execute sp_execute_external_script", adicione o seguinte comando T-SQL para inserir o resultado do script Python na tabela

INSERT INTO STOCK_PRICE_HISTORY --Inserir o resultado na tabela

Conclusão

O web scraping utilizando o script Python no SQL Server é uma ótima maneira de automatizar processos demorados, economizando tempo e aumentando produtividade.

Permitindo a coleta dos dados nas páginas de internet de forma rápida e eficiente. Inclusive, com a possibilidade de personalizar com os parâmetros de pesquisa de acordo com sua necessidade. 

Além disso, ao integrar um script Python ao SQL Server, conseguimos extrair insights valiosos em grande quantidade de dados utilizando o mesmo ambiente já conhecido pelo profissional do banco de dados, tornando-se uma técnica que reduz a curva de aprendizado e melhora a eficiência dessa atividade.

📁 Arquivos disponíveis no GitHub, no repositório "sql-server-machine-learning-services" não esquece de seguir para valorizar o conteúdo:
https://www.fabioms.com.br/?url=github

This content contains
  • Content Video/Article
  • Language Portuguese
  • Duration 14m 6s
  • Subtitles Sim

  • Reading time 7 min 11 seg

avatar
Fabio Santos

Data Scientist and Consultant for Digital and Analytics Solutions


  • Share

Youtube Channel

@fabioms

Subscribe now