Como usar aiohttp para Web Scraping

Aloísio Vítor
Image Processing Expert
23-Sep-2024
O que é aiohttp?

aiohttp é um poderoso framework cliente/servidor HTTP assíncrono para Python. Ele utiliza a biblioteca asyncio do Python para habilitar operações de rede concorrentes, tornando-o altamente eficiente para tarefas como web scraping, desenvolvimento web e quaisquer operações ligadas à rede.
Recursos:
- E/S assíncrona: Construído sobre o
asynciopara operações de rede não bloqueantes. - Suporte a cliente e servidor: Fornece implementações de cliente e servidor HTTP.
- Suporte a WebSockets: Suporte nativo para protocolos WebSockets.
- Alto desempenho: Tratamento eficiente de múltiplas conexões simultaneamente.
- Extensibilidade: Suporta middlewares, sinais e plugins para personalização avançada.
Pré-requisitos
Antes de começar a usar o aiohttp, certifique-se de que você tenha:
- Python 3.7 ou superior
- pip para instalar pacotes Python
Começando com aiohttp
Instalação
Instale o aiohttp usando o pip:
bash
pip install aiohttp
Exemplo básico: Fazendo uma solicitação GET
Aqui está como executar uma solicitação GET simples usando aiohttp:
python
import asyncio
import aiohttp
async def fetch(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
status = response.status
text = await response.text()
print(f'Código de Status: {status}')
print('Corpo da Resposta:', text)
if __name__ == '__main__':
asyncio.run(fetch('https://httpbin.org/get'))
Exemplo de Web Scraping: Raspagem de Citações de um Site
Vamos raspar o site Quotes to Scrape para extrair citações e seus autores:
python
import asyncio
import aiohttp
from bs4 import BeautifulSoup
async def fetch_content(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.text()
async def scrape_quotes():
url = 'http://quotes.toscrape.com/'
html = await fetch_content(url)
soup = BeautifulSoup(html, 'html.parser')
quotes = soup.find_all('div', class_='quote')
for quote in quotes:
text = quote.find('span', class_='text').get_text(strip=True)
author = quote.find('small', class_='author').get_text(strip=True)
print(f'{text} — {author}')
if __name__ == '__main__':
asyncio.run(scrape_quotes())
Saída:
“O mundo como o criamos é um processo de nosso pensamento. Ele não pode ser mudado sem mudar nosso pensamento.” — Albert Einstein
“São nossas escolhas, Harry, que mostram o que realmente somos, muito mais do que nossas habilidades.” — J.K. Rowling
... (citações adicionais)
Lidando com captchas com CapSolver e aiohttp
Nesta seção, exploraremos como integrar o CapSolver com o aiohttp para contornar captchas. O CapSolver é um serviço externo que ajuda a resolver vários tipos de captchas, incluindo ReCaptcha v2, v3
Demonstraremos como resolver o ReCaptcha V2 usando o CapSolver e, em seguida, acessar uma página que requer a resolução de captcha.
Exemplo: Resolvendo ReCaptcha V2 com CapSolver e aiohttp
Primeiro, instale o pacote CapSolver:
bash
pip install capsolver
Agora, aqui está como você pode resolver um ReCaptcha V2 e usar a solução em sua solicitação:
python
import asyncio
import os
import aiohttp
import capsolver
# Defina sua chave de API CapSolver
capsolver.api_key = os.getenv("CAPSOLVER_API_KEY", "Sua Chave de API CapSolver")
PAGE_URL = os.getenv("PAGE_URL", "https://example.com") # URL da página com captcha
SITE_KEY = os.getenv("SITE_KEY", "SITE_KEY") # Chave do site do captcha
async def solve_recaptcha_v2():
solution = capsolver.solve({
"type": "ReCaptchaV2TaskProxyless",
"websiteURL": PAGE_URL,
"websiteKey": SITE_KEY
})
return solution['solution']['gRecaptchaResponse']
async def access_protected_page():
captcha_response = await solve_recaptcha_v2()
print("Captcha Resolvido!")
async with aiohttp.ClientSession() as session:
data = {
'g-recaptcha-response': captcha_response,
# Inclua outros dados do formulário se necessário pelo site
}
async with session.post(PAGE_URL, data=data) as response:
content = await response.text()
print('Conteúdo da Página:', content)
if __name__ == '__main__':
asyncio.run(access_protected_page())
Observação: Substitua PAGE_URL pela URL da página que contém o captcha e SITE_KEY pela chave do site do captcha. A chave do site geralmente é encontrada no código-fonte HTML da página dentro do widget do captcha.
Lidando com Proxies com aiohttp
Para rotear suas solicitações através de um proxy, especifique o parâmetro proxy:
python
import asyncio
import aiohttp
async def fetch(url, proxy):
async with aiohttp.ClientSession() as session:
async with session.get(url, proxy=proxy) as response:
return await response.text()
async def main():
proxy = 'http://username:password@proxyserver:port'
url = 'https://httpbin.org/ip'
content = await fetch(url, proxy)
print('Corpo da Resposta:', content)
if __name__ == '__main__':
asyncio.run(main())
Lidando com Cookies com aiohttp
Você pode gerenciar cookies usando CookieJar:
python
import asyncio
import aiohttp
async def main():
jar = aiohttp.CookieJar()
async with aiohttp.ClientSession(cookie_jar=jar) as session:
await session.get('https://httpbin.org/cookies/set?name=value')
# Exibir os cookies
for cookie in jar:
print(f'{cookie.key}: {cookie.value}')
if __name__ == '__main__':
asyncio.run(main())
Uso Avançado: Cabeçalhos Personalizados e Solicitações POST
Você pode enviar cabeçalhos personalizados e executar solicitações POST com aiohttp:
python
import asyncio
import aiohttp
async def main():
headers = {
'User-Agent': 'Mozilla/5.0 (compatible)',
'Accept-Language': 'pt-BR,pt;q=0.5',
}
data = {
'username': 'testuser',
'password': 'testpass',
}
async with aiohttp.ClientSession() as session:
async with session.post('https://httpbin.org/post', headers=headers, data=data) as response:
json_response = await response.json()
print('Resposta JSON:', json_response)
if __name__ == '__main__':
asyncio.run(main())
Código Bônus
Receba seu código Bônus para as melhores soluções de captcha em CapSolver: scrape. Após resgatá-lo, você receberá um bônus extra de 5% após cada recarga, ilimitadas vezes.

Conclusão
Com o aiohttp, você pode executar tarefas de web scraping assíncronas de forma eficiente e lidar com várias operações de rede simultaneamente. A integração com o CapSolver permite que você resolva captchas como o ReCaptcha V2, permitindo o acesso a conteúdo que pode estar restrito.
Sinta-se à vontade para expandir esses exemplos para atender às suas necessidades específicas. Lembre-se sempre de respeitar os termos de serviço dos sites que você raspa e seguir as diretrizes legais.
Boas raspadas!
Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.
Mais

Erro do Cloudflare 1006, 1007, 1008 Solução para Resolver | Como Corrigir
Lidando com erros do Cloudflare 1006, 1007 ou 1008? Aprenda soluções práticas para resolver esses bloqueios de acesso e melhorar sua experiência de crawling na web.

Anh Tuan
05-Dec-2025

Como resolver captchas ao realizar web scraping com o Scrapling e o CapSolver
Scrapling + CapSolver permite raspagem automatizada com ReCaptcha v2/v3 e Cloudflare Turnstile bypass.

Aloísio Vítor
05-Dec-2025

Alterar o User-Agent no Selenium | Passos & Boas Práticas
Alterar o Agente de Usuário no Selenium é um passo crucial para muitas tarefas de raspagem da web. Ajuda a disfarçar o script de automação como um navegador regular...

Emma Foster
05-Dec-2025

Como identificar se `action` é necessário para resolver o Cloudflare Turnstile usando a extensão CapSolver
Aprenda a identificar ações para resolução eficaz de captchas cloudflare turnstile. Siga nosso guia passo a passo sobre o uso das ferramentas e técnicas do Capsolver.

Aloísio Vítor
05-Dec-2025

Descubra o Poder do 9Proxy: Uma Revisão Abrangente
Neste artigo, vamos mostrar a você o que é 9proxy e os serviços que eles oferecem.

Ethan Collins
04-Dec-2025

Web Scraping com Selenium e Python | Resolvendo Captcha Ao Fazer Web Scraping
Neste artigo, você vai se familiarizar com a raspagem de dados da web usando o Selenium e o Python, e aprender a resolver o Captcha envolvido no processo para uma extração de dados eficiente.

Anh Tuan
04-Dec-2025

