Por que Swift é a linguagem ideal para parsing que ninguém menciona
\n\nQuando 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\nNeste 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\nO que é parsing e raspagem em Swift?
\n\nParsing 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\nPrincipais 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
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.
Instalação e configuração do projeto
\n\nPrimeiro, 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\nOu, se você estiver trabalhando com SPM sem Xcode, basta adicionar a linha acima ao seu Package.swift.
Uma alternativa é usar CocoaPods:
\npod 'SwiftSoup', '~> 2.6.0'\n\nApós a instalação, importe a biblioteca no seu código:
\nimport SwiftSoup\nimport Foundation\n\nPronto! Agora podemos começar a escrever o parser.
\n\nEscrevendo o primeiro parser em Swift: passo a passo
\n\nVamos 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\nPasso 1: Baixar a página HTML
\n\nUsamos URLSession para baixar dados de forma assíncrona. Swift é uma linguagem com forte suporte a async/await, então usaremos a abordagem moderna.
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\nObserve: retornamos uma string HTML. Estes são os dados brutos que iremos analisar.
\n\nPasso 2: Parsing do HTML com SwiftSoup
\n\nAgora a parte interessante — extrair os dados. SwiftSoup funciona como seletores CSS: você indica quais elementos deseja obter.
\n\nfunc 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