CAPSOLVER
Blog
Cara Menggunakan aiohttp untuk Web Scraping

Cara Menggunakan aiohttp untuk Web Scraping

Logo of CapSolver

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 asyncio untuk 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:

Memulai dengan aiohttp

Instalasi

Instal aiohttp menggunakan pip:

bash Copy
pip install aiohttp

Contoh Dasar: Melakukan Permintaan GET

Berikut cara melakukan permintaan GET sederhana menggunakan aiohttp:

python Copy
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 Copy
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:

Copy
“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 Copy
pip install capsolver

Sekarang, berikut cara Anda memecahkan ReCaptcha V2 dan menggunakan solusinya dalam permintaan Anda:

python Copy
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 Copy
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 Copy
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())

Anda dapat mengelola cookie menggunakan CookieJar:

python Copy
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 Copy
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

Kesalahan Cloudflare 1006, 1007, 1008
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.

Cloudflare
Logo of CapSolver

Emma Foster

05-Dec-2025

AI-LLM: Solusi Masa Depan untuk Pengendalian Risiko Pengenalan Gambar dan Penyelesaian CAPTCHA
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.

Logo of CapSolver

Lucas Mitchell

05-Dec-2025

Cara Mengatasi Captchas Saat Scrapping Web dengan Scrapling dan CapSolver
Cara Menyelesaikan Captchas Ketika Web Scraping dengan Scrapling dan CapSolver

Scrapling + CapSolver memungkinkan pengambilan data otomatis dengan ReCaptcha v2/v3 dan Cloudflare Turnstile bypass.

web scraping
Logo of CapSolver

Adélia Cruz

05-Dec-2025

Ubah User-Agent di Selenium
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...

The other captcha
Logo of CapSolver

Aloísio Vítor

05-Dec-2025

Cara Mengidentifikasi Apakah `action` Diperlukan untuk Menyelesaikan Cloudflare Turnstile Menggunakan Ekstensi CapSolver
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.

Cloudflare
Logo of CapSolver

Anh Tuan

05-Dec-2025

9proxy
Temukan Kekuatan 9Proxy: Ulasan Komprehensif

Dalam artikel ini, kami akan menunjukkan apa itu 9proxy dan layanan yang mereka tawarkan.

Partners
Logo of CapSolver

Rajinder Singh

04-Dec-2025