CAPSOLVER
Blog
Web Scraping dengan SeleniumBase dan Python di 2024

Web Scraping dengan SeleniumBase dan Python di 2024

Logo of CapSolver

Emma Foster

Machine Learning Engineer

05-Nov-2024

Web scraping adalah alat yang ampuh untuk ekstraksi data, riset pasar, dan otomatisasi. Namun, CAPTCHA dapat menghambat upaya scraping otomatis. Dalam panduan ini, kita akan menjelajahi cara menggunakan SeleniumBase untuk web scraping dan mengintegrasikan CapSolver untuk menyelesaikan CAPTCHA secara efisien, menggunakan quotes.toscrape.com sebagai situs web contoh kita.

Pengenalan SeleniumBase

SeleniumBase adalah kerangka kerja Python yang menyederhanakan otomatisasi web dan pengujian. Ini memperluas kemampuan Selenium WebDriver dengan API yang lebih ramah pengguna, pemilih canggih, penantian otomatis, dan alat pengujian tambahan.

Menyiapkan SeleniumBase

Sebelum kita mulai, pastikan Anda telah menginstal Python 3 di sistem Anda. Ikuti langkah-langkah ini untuk menyiapkan SeleniumBase:

  1. Instal SeleniumBase:

    bash Copy
    pip install seleniumbase
  2. Verifikasi Instalasi:

    bash Copy
    sbase --help

Scraper Dasar dengan SeleniumBase

Mari kita mulai dengan membuat skrip sederhana yang menavigasi ke quotes.toscrape.com dan mengekstrak kutipan dan penulis.

Contoh: Scrap kutipan dan penulisnya dari beranda.

python Copy
# scrape_quotes.py

from seleniumbase import BaseCase

class QuotesScraper(BaseCase):
    def test_scrape_quotes(self):
        self.open("https://quotes.toscrape.com/")
        quotes = self.find_elements("div.quote")
        for quote in quotes:
            text = quote.find_element("span.text").text
            author = quote.find_element("small.author").text
            print(f"\"{text}\" - {author}")

if __name__ == "__main__":
    QuotesScraper().main()

Jalankan skrip:

bash Copy
python scrape_quotes.py

Keluaran:

Copy
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.” - Albert Einstein
...

Contoh Web Scraping yang Lebih Canggih

Untuk meningkatkan keterampilan web scraping Anda, mari kita jelajahi contoh yang lebih canggih menggunakan SeleniumBase.

Scraping Beberapa Halaman (Paginasi)

Banyak situs web menampilkan konten di beberapa halaman. Mari kita modifikasi skrip kita untuk menavigasi semua halaman dan mengikis kutipan.

python Copy
# scrape_quotes_pagination.py

from seleniumbase import BaseCase

class QuotesPaginationScraper(BaseCase):
    def test_scrape_all_quotes(self):
        self.open("https://quotes.toscrape.com/")
        while True:
            quotes = self.find_elements("div.quote")
            for quote in quotes:
                text = quote.find_element("span.text").text
                author = quote.find_element("small.author").text
                print(f"\"{text}\" - {author}")

            # Periksa apakah ada halaman berikutnya
            if self.is_element_visible('li.next > a'):
                self.click('li.next > a')
            else:
                break

if __name__ == "__main__":
    QuotesPaginationScraper().main()

Penjelasan:

  • Kami mengulangi halaman dengan memeriksa apakah tombol "Berikutnya" tersedia.
  • Kami menggunakan is_element_visible untuk memeriksa tombol "Berikutnya".
  • Kami mengklik tombol "Berikutnya" untuk menavigasi ke halaman berikutnya.

Menangani Konten Dinamis dengan AJAX

Beberapa situs web memuat konten secara dinamis menggunakan AJAX. SeleniumBase dapat menangani skenario seperti itu dengan menunggu elemen dimuat.

Contoh: Scrap tag dari situs web, yang dimuat secara dinamis.

python Copy
# scrape_dynamic_content.py

from seleniumbase import BaseCase

class TagsScraper(BaseCase):
    def test_scrape_tags(self):
        self.open("https://quotes.toscrape.com/")
        # Klik tautan 'Top Ten tags' untuk memuat tag secara dinamis
        self.click('a[href="/tag/"]')
        self.wait_for_element("div.tags-box")
        tags = self.find_elements("span.tag-item > a")
        for tag in tags:
            tag_name = tag.text
            print(f"Tag: {tag_name}")

if __name__ == "__main__":
    TagsScraper().main()

Penjelasan:

  • Kami menunggu elemen div.tags-box untuk memastikan bahwa konten dinamis dimuat.
  • wait_for_element memastikan bahwa skrip tidak berlanjut hingga elemen tersedia.

Mengirimkan Formulir dan Masuk

Terkadang, Anda perlu masuk ke situs web sebelum mengikis konten. Berikut cara Anda menangani pengiriman formulir.

Contoh: Masuk ke situs web dan mengikis kutipan dari halaman pengguna yang diautentikasi.

python Copy
# scrape_with_login.py

from seleniumbase import BaseCase

class LoginScraper(BaseCase):
    def test_login_and_scrape(self):
        self.open("https://quotes.toscrape.com/login")
        # Isi formulir masuk
        self.type("input#username", "testuser")
        self.type("input#password", "testpass")
        self.click("input[type='submit']")

        # Verifikasi masuk dengan memeriksa tautan keluar
        if self.is_element_visible('a[href="/logout"]'):
            print("Logged in successfully!")

            # Sekarang kikis kutipan
            self.open("https://quotes.toscrape.com/")
            quotes = self.find_elements("div.quote")
            for quote in quotes:
                text = quote.find_element("span.text").text
                author = quote.find_element("small.author").text
                print(f"\"{text}\" - {author}")
        else:
            print("Login failed.")

if __name__ == "__main__":
    LoginScraper().main()

Penjelasan:

  • Kami menavigasi ke halaman masuk dan mengisi kredensial.
  • Setelah mengirimkan formulir, kami memverifikasi masuk dengan memeriksa keberadaan tautan keluar.
  • Kemudian kami melanjutkan untuk mengikis konten yang tersedia untuk pengguna yang masuk.

Catatan: Karena quotes.toscrape.com mengizinkan nama pengguna dan kata sandi apa pun untuk demonstrasi, kita dapat menggunakan kredensial dummy.

Mengekstrak Data dari Tabel

Situs web sering kali menyajikan data dalam tabel. Berikut cara mengekstrak data tabel.

Contoh: Scrap data dari tabel (contoh hipotetis karena situs web tidak memiliki tabel).

python Copy
# scrape_table.py

from seleniumbase import BaseCase

class TableScraper(BaseCase):
    def test_scrape_table(self):
        self.open("https://www.example.com/table-page")
        # Tunggu tabel dimuat
        self.wait_for_element("table#data-table")
        rows = self.find_elements("table#data-table > tbody > tr")
        for row in rows:
            cells = row.find_elements("td")
            row_data = [cell.text for cell in cells]
            print(row_data)

if __name__ == "__main__":
    TableScraper().main()

Penjelasan:

  • Kami menemukan tabel berdasarkan ID atau kelasnya.
  • Kami mengulangi setiap baris dan kemudian setiap sel untuk mengekstrak data.
  • Karena quotes.toscrape.com tidak memiliki tabel, ganti URL dengan situs web nyata yang berisi tabel.

Mengintegrasikan CapSolver ke SeleniumBase

Meskipun quotes.toscrape.com tidak memiliki CAPTCHA, banyak situs web dunia nyata memilikinya. Untuk mempersiapkan kasus seperti itu, kita akan menunjukkan cara mengintegrasikan CapSolver ke dalam skrip SeleniumBase kita menggunakan ekstensi browser CapSolver.

Cara menyelesaikan captcha dengan SeleniumBase menggunakan Capsolver

  1. Unduh Ekstensi CapSolver:

    • Kunjungi halaman rilis CapSolver GitHub.
    • Unduh versi terbaru ekstensi browser CapSolver.
    • Buka ritsleting ekstensi ke direktori di root proyek Anda, misalnya, ./capsolver_extension.

Mengonfigurasi Ekstensi CapSolver

  1. Temukan File Konfigurasi:

    • Temukan file config.json yang terletak di direktori capsolver_extension/assets.
  2. Perbarui Konfigurasi:

    • Atur enabledForcaptcha dan/atau enabledForRecaptchaV2 ke true tergantung pada jenis CAPTCHA yang ingin Anda selesaikan.
    • Atur captchaMode atau reCaptchaV2Mode ke "token" untuk pemecahan otomatis.

    Contoh config.json:

    json Copy
    {
      "apiKey": "YOUR_CAPSOLVER_API_KEY",
      "enabledForcaptcha": true,
      "captchaMode": "token",
      "enabledForRecaptchaV2": true,
      "reCaptchaV2Mode": "token",
      "solveInvisibleRecaptcha": true,
      "verbose": false
    }
    • Ganti "YOUR_CAPSOLVER_API_KEY" dengan kunci API CapSolver Anda yang sebenarnya.

Memuat Ekstensi CapSolver di SeleniumBase

Untuk menggunakan ekstensi CapSolver di SeleniumBase, kita perlu mengonfigurasi browser untuk memuat ekstensi saat dimulai.

  1. Modifikasi Skrip SeleniumBase Anda:

    • Impor ChromeOptions dari selenium.webdriver.chrome.options.
    • Atur opsi untuk memuat ekstensi CapSolver.

    Contoh:

    python Copy
    from seleniumbase import BaseCase
    from selenium.webdriver.chrome.options import Options as ChromeOptions
    import os
    
    class QuotesScraper(BaseCase):
        def setUp(self):
            super().setUp()
    
            # Path ke ekstensi CapSolver
            extension_path = os.path.abspath('capsolver_extension')
    
            # Konfigurasikan opsi Chrome
            options = ChromeOptions()
            options.add_argument(f"--load-extension={extension_path}")
            options.add_argument("--disable-gpu")
            options.add_argument("--no-sandbox")
    
            # Perbarui pengandar dengan opsi baru
            self.driver.quit()
            self.driver = self.get_new_driver(browser_name="chrome", options=options)
  2. Pastikan Path Ekstensi Benar:

    • Pastikan extension_path menunjuk ke direktori tempat Anda membuka ritsleting ekstensi CapSolver.

Contoh Skrip dengan Integrasi CapSolver

Berikut adalah skrip lengkap yang mengintegrasikan CapSolver ke SeleniumBase untuk menyelesaikan CAPTCHA secara otomatis. Kami akan terus menggunakan https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php sebagai situs contoh kami.

python Copy
# scrape_quotes_with_capsolver.py
from seleniumbase import BaseCase
from selenium.webdriver.chrome.options import Options as ChromeOptions
import os

class QuotesScraper(BaseCase):
    def setUp(self):
        super().setUp()

        # Path ke folder ekstensi CapSolver
        # Pastikan path ini menunjuk ke folder ekstensi Chrome CapSolver dengan benar
        extension_path = os.path.abspath('capsolver_extension')

        # Konfigurasikan opsi Chrome
        options = ChromeOptions()
        options.add_argument(f"--load-extension={extension_path}")
        options.add_argument("--disable-gpu")
        options.add_argument("--no-sandbox")

        # Perbarui pengandar dengan opsi baru
        self.driver.quit()  # Tutup instance pengandar yang ada
        self.driver = self.get_new_driver(browser_name="chrome", options=options)

    def test_scrape_quotes(self):
        # Arahkan ke situs target dengan reCAPTCHA
        self.open("https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php")

        # Periksa keberadaan CAPTCHA dan selesaikan jika perlu
        if self.is_element_visible("iframe[src*='recaptcha']"):
            # Ekstensi CapSolver seharusnya menangani CAPTCHA secara otomatis
            print("CAPTCHA detected, waiting for CapSolver extension to solve it...")

            # Tunggu CAPTCHA terselesaikan
            self.sleep(10)  # Sesuaikan waktu berdasarkan waktu penyelesaian rata-rata

        # Lanjutkan dengan tindakan scraping setelah CAPTCHA terselesaikan
        # Contoh tindakan: mengklik tombol atau mengekstrak teks
        self.assert_text("reCAPTCHA demo", "h1")  # Konfirmasi konten halaman

    def tearDown(self):
        # Bersihkan dan tutup browser setelah pengujian
        self.driver.quit()
        super().tearDown()

if __name__ == "__main__":
    QuotesScraper().main()

Penjelasan:

  • Metode setUp:

    • Kami menimpa metode setUp untuk mengonfigurasi browser Chrome dengan ekstensi CapSolver sebelum setiap pengujian.
    • Kami menentukan path ke ekstensi CapSolver dan menambahkannya ke opsi Chrome.
    • Kami menutup pengandar yang ada dan membuat yang baru dengan opsi yang diperbarui.
  • Metode test_scrape_quotes:

    • Kami menavigasi ke situs web target.
    • Ekstensi CapSolver akan secara otomatis mendeteksi dan menyelesaikan CAPTCHA apa pun.
    • Kami melakukan tugas scraping seperti biasa.
  • Metode tearDown:

    • Kami memastikan browser ditutup setelah pengujian untuk membebaskan sumber daya.

Menjalankan Skrip:

bash Copy
python scrape_quotes_with_capsolver.py

Catatan: Meskipun quotes.toscrape.com tidak memiliki CAPTCHA, mengintegrasikan CapSolver mempersiapkan scraper Anda untuk situs yang memilikinya.

Kode Bonus

Klaim Kode Bonus Anda untuk solusi captcha teratas di CapSolver: scrape. Setelah menukarkannya, Anda akan mendapatkan bonus tambahan 5% setelah setiap pengisian ulang, tanpa batas.

Kesimpulan

Dalam panduan ini, kita telah menjelajahi cara melakukan web scraping menggunakan SeleniumBase, membahas teknik scraping dasar dan contoh yang lebih canggih seperti menangani paginasi, konten dinamis, dan pengiriman formulir. Kami juga telah menunjukkan cara mengintegrasikan CapSolver ke dalam skrip SeleniumBase Anda untuk menyelesaikan CAPTCHA secara otomatis, memastikan sesi scraping tanpa gangguan.

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