Parsing em Swift: criando um parser de dados em 30 minutos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que Swift é a linguagem ideal para parsing que ninguém menciona

\n\n

Quando se fala em coleta de dados da internet, todo mundo imediatamente pensa em Python com seu BeautifulSoup e Scrapy. Mas e se eu disser que Swift, a linguagem que você usa para aplicativos iOS, é capaz de fazer o mesmo? Sim, você não ouviu errado. Parsing em Swift não é apenas uma excentricidade, mas uma ferramenta poderosa que pode ser 2 a 3 vezes mais rápida que Python em tarefas semelhantes. E hoje vamos provar isso.

\n\n

Neste artigo, você aprenderá como configurar o ambiente, escrever seu primeiro parser em Swift, tratar erros e salvar dados. Não usaremos abstrações complexas — apenas código limpo e compreensível que você poderá executar em apenas 15 minutos.

\n\n

O que é parsing e raspagem em Swift?

\n\n

Parsing Swift é o processo de extrair dados estruturados de páginas web ou documentos usando a linguagem de programação Swift. Diferente do web scraping clássico em Python, Swift oferece integração nativa com iOS/macOS, tornando-o ideal para criar aplicativos que coletam dados por conta própria.

\n\n

Principais cenários de uso da raspagem de dados Swift:

\n
    \n
  • Coleta de preços de lojas online para monitoramento de concorrentes
  • \n
  • Extração de dados de contato de sites de catálogos
  • \n
  • Análise de feeds de notícias e blogs
  • \n
  • Criação de APIs próprias para aplicativos (quando não há API oficial)
  • \n
\n\n

Para parsing em Swift, usaremos duas tecnologias-chave: URLSession para baixar páginas HTML e a biblioteca SwiftSoup para analisar o documento HTML. SwiftSoup é o equivalente ao BeautifulSoup do Python, mas escrito em Swift puro.

\n\n

Instalação e configuração do projeto

\n\n

Primeiro, precisamos instalar o SwiftSoup. A maneira mais fácil é através do Swift Package Manager. Crie um novo projeto ou abra um existente no Xcode e adicione a dependência:

\n\n
// Em Package.swift\ndependencies: [\n    .package(url: "https://github.com/scinfu/SwiftSoup.git", from: "2.6.0")\n]
\n\n

Ou, se você estiver trabalhando com SPM sem Xcode, basta adicionar a linha acima ao seu Package.swift.

\n\n

Uma alternativa é usar CocoaPods:

\n
pod 'SwiftSoup', '~> 2.6.0'
\n\n

Após a instalação, importe a biblioteca no seu código:

\n
import SwiftSoup\nimport Foundation
\n\n

Pronto! Agora podemos começar a escrever o parser.

\n\n

Escrevendo o primeiro parser em Swift: passo a passo

\n\n

Vamos escrever um parser que extrai os títulos de artigos da página inicial do Hacker News (news.ycombinator.com). Este é um exercício clássico para aprender parsing.

\n\n

Passo 1: Baixar a página HTML

\n\n

Usamos URLSession para baixar dados de forma assíncrona. Swift é uma linguagem com forte suporte a async/await, então usaremos a abordagem moderna.

\n\n
func fetchHTML(from urlString: String) async throws -> String {\n    guard let url = URL(string: urlString) else {\n        throw URLError(.badURL)\n    }\n    \n    let (data, _) = try await URLSession.shared.data(from: url)\n    guard let html = String(data: data, encoding: .utf8) else {\n        throw URLError(.cannotDecodeContentData)\n    }\n    \n    return html\n}
\n\n

Observe: retornamos uma string HTML. Estes são os dados brutos que iremos analisar.

\n\n

Passo 2: Parsing do HTML com SwiftSoup

\n\n

Agora a parte interessante — extrair os dados. SwiftSoup funciona como seletores CSS: você indica quais elementos deseja obter.

\n\n
func parseTitles(from html: String) throws -> [String] {\n    let doc = try SwiftSoup.parse(html)\n    let titles = try doc.select(".titleline a").array()\n    \n    var result: [String] = []\n    for title in titles {\n        let text = try title.text()\n                

Blogs

Book Recommendations