Cara Menggunakan aiohttp untuk Web Scraping

Ethan Collins
Pattern Recognition Specialist
23-Sep-2024
Apa itu aiohttp?

aiohttp adalah kerangka kerja HTTP klien/server asinkron yang kuat untuk Python. Ia memanfaatkan pustaka asyncio Python untuk mengaktifkan operasi jaringan bersamaan, membuatnya sangat efisien untuk tugas-tugas seperti pengambilan web, pengembangan web, dan operasi yang terikat jaringan.
Fitur:
- I/O Asinkron: Dibangun di atas
asynciountuk operasi jaringan non-blokir. - Dukungan Klien dan Server: Menyediakan implementasi klien HTTP dan server.
- Dukungan WebSockets: Dukungan asli untuk protokol WebSockets.
- Kinerja Tinggi: Penanganan koneksi ganda secara bersamaan yang efisien.
- Ekstensibilitas: Mendukung middleware, sinyal, dan plugin untuk penyesuaian tingkat lanjut.
Prasyarat
Sebelum Anda mulai menggunakan aiohttp, pastikan Anda memiliki:
- Python 3.7 atau lebih tinggi
- pip untuk menginstal paket Python
Memulai dengan aiohttp
Instalasi
Instal aiohttp menggunakan pip:
bash
pip install aiohttp
Contoh Dasar: Melakukan Permintaan GET
Berikut cara melakukan permintaan GET sederhana menggunakan 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'Kode Status: {status}')
print('Badan Respons:', text)
if __name__ == '__main__':
asyncio.run(fetch('https://httpbin.org/get'))
Contoh Pengambilan Web: Mengambil Kutipan dari Situs Web
Mari kita ambil situs web Quotes to Scrape untuk mengekstrak kutipan dan penulisnya:
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())
Keluaran:
“Dunia yang kita ciptakan adalah proses pemikiran kita. Itu tidak dapat diubah tanpa mengubah pemikiran kita.” — Albert Einstein
“Adalah pilihan kita, Harry, yang menunjukkan siapa kita sebenarnya, jauh lebih dari kemampuan kita.” — J.K. Rowling
... (kutipan tambahan)
Menangani Captcha dengan CapSolver dan aiohttp
Pada bagian ini, kita akan menjelajahi cara mengintegrasikan CapSolver dengan aiohttp untuk melewati captcha. CapSolver adalah layanan eksternal yang membantu dalam memecahkan berbagai jenis captcha, termasuk ReCaptcha V2 dan captcha.
Kami akan menunjukkan cara memecahkan ReCaptcha V2 menggunakan CapSolver dan kemudian mengakses halaman yang memerlukan pemecahan captcha.
Contoh: Memecahkan ReCaptcha V2 dengan CapSolver dan aiohttp
Pertama, instal paket CapSolver:
bash
pip install capsolver
Sekarang, berikut cara Anda memecahkan ReCaptcha V2 dan menggunakan solusinya dalam permintaan Anda:
python
import asyncio
import os
import aiohttp
import capsolver
# Tetapkan kunci API CapSolver Anda
capsolver.api_key = os.getenv("CAPSOLVER_API_KEY", "Kunci API CapSolver Anda")
PAGE_URL = os.getenv("PAGE_URL", "https://example.com") # URL Halaman dengan captcha
SITE_KEY = os.getenv("SITE_KEY", "SITE_KEY") # Kunci situs 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 Terpecahkan!")
async with aiohttp.ClientSession() as session:
data = {
'g-recaptcha-response': captcha_response,
# Sertakan data formulir lainnya jika diperlukan oleh situs web
}
async with session.post(PAGE_URL, data=data) as response:
content = await response.text()
print('Konten Halaman:', content)
if __name__ == '__main__':
asyncio.run(access_protected_page())
Catatan: Ganti PAGE_URL dengan URL halaman yang berisi captcha dan SITE_KEY dengan kunci situs captcha. Kunci situs biasanya ditemukan dalam kode sumber HTML halaman di dalam widget captcha.
Memecahkan captcha dengan CapSolver
Untuk memecahkan captcha, sesuaikan jenis tugas di fungsi capsolver.solve():
python
async def solve_captcha():
solution = capsolver.solve({
"type": "captchaTaskProxyless",
"websiteURL": PAGE_URL,
"websiteKey": SITE_KEY
})
return solution['solution']['gRecaptchaResponse']
Menangani Proksi dengan aiohttp
Untuk mengarahkan permintaan Anda melalui proksi, tentukan parameter 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('Badan Respons:', content)
if __name__ == '__main__':
asyncio.run(main())
Menangani Cookie dengan aiohttp
Anda dapat mengelola cookie menggunakan 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')
# Tampilkan cookie
for cookie in jar:
print(f'{cookie.key}: {cookie.value}')
if __name__ == '__main__':
asyncio.run(main())
Penggunaan Lanjutan: Header Kustom dan Permintaan POST
Anda dapat mengirim header kustom dan melakukan permintaan POST dengan aiohttp:
python
import asyncio
import aiohttp
async def main():
headers = {
'User-Agent': 'Mozilla/5.0 (compatible)',
'Accept-Language': 'en-US,en;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('Respons JSON:', json_response)
if __name__ == '__main__':
asyncio.run(main())
Kode Bonus
Klaim Kode Bonus Anda untuk solusi captcha teratas di CapSolver: scrape. Setelah menebusnya, Anda akan mendapatkan bonus tambahan 5% setelah setiap pengisian ulang, tanpa batas.

Kesimpulan
Dengan aiohttp, Anda dapat secara efisien melakukan tugas pengambilan web asinkron dan menangani beberapa operasi jaringan secara bersamaan. Mengintegrasikannya dengan CapSolver memungkinkan Anda untuk melewati captcha seperti ReCaptcha V2 dan captcha, memungkinkan akses ke konten yang mungkin dibatasi.
Jangan ragu untuk mengembangkan contoh-contoh ini agar sesuai dengan kebutuhan spesifik Anda. Selalu ingat untuk menghormati persyaratan layanan situs web yang Anda ambil dan mematuhi pedoman hukum.
Selamat mengambil!
Pernyataan Kepatuhan: Informasi yang diberikan di blog ini hanya untuk tujuan informasi. CapSolver berkomitmen untuk mematuhi semua hukum dan peraturan yang berlaku. Penggunaan jaringan CapSolver untuk kegiatan ilegal, penipuan, atau penyalahgunaan sangat dilarang dan akan diselidiki. Solusi penyelesaian captcha kami meningkatkan pengalaman pengguna sambil memastikan kepatuhan 100% dalam membantu menyelesaikan kesulitan captcha selama pengambilan data publik. Kami mendorong penggunaan layanan kami secara bertanggung jawab. Untuk informasi lebih lanjut, silakan kunjungi Syarat Layanan dan Kebijakan Privasi.
Lebih lanjut

Solusi Penyelesaian Error Cloudflare 1006, 1007, 1008 | Cara Mengatasi
Kesulitan dengan kesalahan Cloudflare 1006, 1007, atau 1008? Pelajari solusi praktis untuk menyelesaikan penolakan akses ini dan tingkatkan pengalaman crawling web Anda.

Emma Foster
05-Dec-2025

AI-LLM: Solusi Masa Depan untuk Pengendalian Risiko Pengenalan Gambar dan Penyelesaian CAPTCHA
Penjelajahan mendalam tentang bagaimana Model Bahasa Besar (MB) mengubah pemecahan CAPTCHA grafis, menggabungkan penalaran zero-shot dengan presisi CNN untuk pengendalian risiko modern.

Lucas Mitchell
05-Dec-2025

Cara Menyelesaikan Captchas Ketika Web Scraping dengan Scrapling dan CapSolver
Scrapling + CapSolver memungkinkan pengambilan data otomatis dengan ReCaptcha v2/v3 dan Cloudflare Turnstile bypass.

Adélia Cruz
05-Dec-2025

Ubah User-Agent di Selenium | Langkah-langkah & Praktik Terbaik
Mengganti User Agent di Selenium adalah langkah penting untuk banyak tugas pengambilan data web. Ini membantu menyamarkan skrip otomasi sebagai browser biasa...

Aloísio Vítor
05-Dec-2025

Cara mengidentifikasi apakah `action` diperlukan untuk mengatasi Cloudflare Turnstile menggunakan ekstensi CapSolver
Pelajari cara mengidentifikasi tindakan untuk penyelesaian CAPTCHA yang efektif Cloudflare Turnstile. Ikuti panduan langkah demi langkah kami dalam menggunakan alat dan teknik Capsolver.

Anh Tuan
05-Dec-2025

Temukan Kekuatan 9Proxy: Ulasan Komprehensif
Dalam artikel ini, kami akan menunjukkan apa itu 9proxy dan layanan yang mereka tawarkan.

Rajinder Singh
04-Dec-2025

