logo proxyscrape gelap

Mengikis Situs Statis & Dinamis dengan Python dan ProxyScrape API

Panduan, Python, Perbedaannya, May-05-20245 menit baca

Di dunia yang semakin bergantung pada data, kemampuan untuk mengumpulkan dan menganalisis informasi dalam jumlah besar dapat memberikan keunggulan kompetitif yang signifikan bagi bisnis dan para profesional. Web scraping, proses mengekstraksi data dari situs web, adalah alat yang ampuh untuk para analis data, pengembang web, pemasar digital, dan pemrogram Python. Panduan ini memandu Anda melalui teknik-teknik web scraping dasar dan lanjutan, menyoroti praktik-praktik terbaik, dan memperkenalkan API Web Scraping dari ProxyScrape sebagai solusi yang fleksibel untuk situs web statis dan dinamis.

Mengidentifikasi Apakah Situs Web Bersifat Statis atau Dinamis

Untuk menentukan apakah sebuah situs web bersifat statis atau dinamis:

  • Periksa Sumber Halaman: Klik kanan dan pilih "Lihat Sumber Halaman." Jika semua konten terlihat dan cocok dengan apa yang ditampilkan di halaman, kemungkinan besar halaman tersebut statis.
  • Gunakan Alat Pengembang Peramban: Buka alat pengembang dengan mengeklik kanan halaman dan memilih "Inspect", lalu lihat tab "Network" saat Anda berinteraksi dengan halaman tersebut. Jika permintaan jaringan baru dibuat sebagai respons terhadap interaksi, kemungkinan situs tersebut adalah situs dinamis.
  • Nonaktifkan JavaScript: Coba nonaktifkan JavaScript di pengaturan browser Anda dan muat ulang halaman. Jika halaman tidak lagi berfungsi dengan baik atau hanya menampilkan sedikit konten, kemungkinan besar halaman tersebut mengandalkan JavaScript untuk mengambil dan merender data, yang mengindikasikan sifatnya yang dinamis.

Metode-metode ini hanya mewakili beberapa cara untuk menentukan apakah sebuah situs web bersifat statis atau dinamis. Meskipun ada strategi tambahan, kami telah menganalisis dan mengidentifikasi teknik-teknik ini, yang kami yakini digunakan secara luas dan efektif.

Mengikis Situs Web Statis dengan Request dan BeautifulSoup

Untuk mengikis konten statis, Python menawarkan pustaka yang tangguh seperti `requests` untuk membuat permintaan HTTP dan `BeautifulSoup` untuk mem-parsing dokumen HTML dan XML. Berikut ini adalah sebuah contoh sederhana:

  • Membuat Permintaan: Gunakan `permintaan` untuk mengambil konten HTML halaman.
  • Penguraian dengan BeautifulSoup: Setelah Anda memiliki konten halaman, `BeautifulSoup` dapat mengurai dan mengekstrak informasi tertentu.
permintaan impor 
from bs4 import BeautifulSoup

response = requests.get('http://example.com')

sup = BeautifulSoup(response.text, 'html.parser')

# Mengekstrak data yang diinginkan
data = soup.find_all('p')

Metode ini sangat cocok bagi mereka yang baru memulai perjalanan web scraping. Metode ini efektif untuk situs web dengan konten statis, yang membutuhkan pengaturan minimal.

Mengikis situs web dinamis

Situs web dinamis menghadirkan tantangan yang berbeda. Situs web ini memuat konten mereka secara asinkron dengan JavaScript, yang berarti scraping HTML langsung tidak akan berfungsi karena data tidak ada pada pemuatan halaman awal.

Ada dua cara untuk melakukan pendekatan terhadap scraping situs web dinamis:

  • Pendekatan pertama adalah menggunakan pustaka otomatisasi peramban seperti Playwright/Selenium untuk mendapatkan konten dan kemudian menguraikannya dengan Beautifulsoup.
  • Pendekatan kedua adalah seperti bermain detektif dengan tab jaringan untuk menemukan titik akhir yang digunakan situs web untuk mengambil datanya. Kemudian, Anda tinggal menggunakan modul 'request' Python untuk mengambil data itu sendiri.

Menavigasi Situs Web Dinamis dengan Playwright

Untuk mengikis konten dinamis, alat seperti Playwright meniru interaksi pengguna nyata dengan peramban, sehingga Anda dapat mengikis data yang dimuat secara dinamis. Berikut ini adalah wawasan singkat tentang cara menggunakan Playwright dengan Python:

  • Menginstal Playwright: Instal paket Playwright dan alat bantu baris perintah.
    - "pip install playwright"
    - "playwright install"
  • Menggunakan Penulis Naskah untuk Mensimulasikan Interaksi: Tulis skrip yang menavigasi situs web dan berinteraksi dengan situs web seperlunya untuk memicu pemuatan konten dinamis
from playwright.sync_api import sync_playwright


if __nama__ == '__main__':

   with sync_playwright() as p:

       browser = p.chromium.launch(headless=True)

      page = browser.new_page()

      page.goto('https://www.scrapethissite.com/pages/ajax-javascript/')

      # Simulasikan interaksi di sini

      page.click('//*[@id="2014"]')

      # Mengekstrak konten dinamis

       content = page.inner_text('//*[@id="oscars"]/div/div[5]/div/table')

      cetak(konten)

       browser.close()

Menganalisis Panel Jaringan untuk mendapatkan titik akhir API:

  • Buka Alat Pengembang
    a. Buka situs web yang Anda minati di browser Anda.
    b. Klik kanan di mana saja pada halaman tersebut, dan pilih Inspect atau tekan Ctrl+Shift+I (Cmd+Option+I pada Mac) untuk membuka alat pengembang.
  • Periksa Tab Jaringan
    a. Klik pada tab Jaringan di alat pengembang. Tab ini adalah tempat Anda akan melihat setiap permintaan jaringan yang dibuat situs web.
    b. Segarkan halaman untuk mulai menangkap lalu lintas dari awal.
  • Menyaring dan Mengidentifikasi Permintaan AJAX
    a. Anda dapat memfilter permintaan berdasarkan tipe seperti XHR (XMLHttpRequest), yang biasanya digunakan untuk permintaan AJAX.
    b. Berinteraksilah dengan halaman tersebut-seperti mengklik tombol, mengisi formulir, atau menggulir-untuk memicu pemuatan konten secara dinamis.
    c. Amati permintaan jaringan yang muncul ketika Anda melakukan tindakan ini. Carilah permintaan yang mengambil data yang Anda minati.
  • Menganalisis Permintaan
    a. Klik pada permintaan di tab Jaringan yang terlihat mengambil data yang Anda perlukan.
    b. Periksa bagian Headers untuk melihat metode permintaan (GET, POST, dll.), URL, dan tajuk lainnya.
  • Mereplikasi Permintaan Menggunakan Python
    a. Gunakan informasi dari tab Header untuk mereplikasi permintaan menggunakan pustaka permintaan Python. Berikut adalah contoh dasar bagaimana Anda dapat melakukannya:
import requests

# URL from the AJAX request
url = 'https://example.com/api/data'

# Any headers you observed that are necessary, like user-agent, authorization tokens, etc.
headers = {
    'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36,gzip(gfe)',
    'Authorization': 'Bearer token_if_needed'
}

# If it's a POST request, you might also need to send data
data = {
    'example_key': 'example_value'
}

# Replace 'get' with 'post' if the request type is POST
response = requests.get(url, headers=headers, data=data if 'post' in locals() else None)

# To view the response
print(response.json()) 

Memanfaatkan API Scraping Web untuk Kedua Skenario

Meskipun menguasai permintaan dan Playwright atau pustaka klien Http lainnya dapat bermanfaat, namun membutuhkan waktu dan upaya untuk menanganinya dengan benar. Pendekatan alternatifnya adalah dengan memanfaatkan API Scraping Web yang mengabstraksikan kompleksitas tugas scraping. API ini tidak hanya menangani pengiriman permintaan HTTP untuk Anda, tetapi juga memberikan bantuan dengan teknik anti-larangan untuk mencegah pemblokiran oleh situs web tertentu.

Memperkenalkan API Scraping Web ProxyScrape

ProxyScrape menawarkan API Web Scraping yang menyederhanakan ekstraksi data dari situs web statis dan dinamis.

Fitur-fitur API meliputi:

  • Integrasi yang mudah dengan situs dinamis dan statis.
  • Dukungan komprehensif untuk berbagai jenis aktivitas web scraping.
  • Kumpulan alamat IP yang luas
  • Menawarkan hingga 100.000 permintaan gratis, memungkinkan pengguna untuk mengeksplorasi dan mewujudkan potensi penuh API tanpa investasi langsung.
  • Teknologi anti-blok yang canggih, dirancang untuk situs web yang dikenal dengan kesulitan scraping.
  • Tindakan memungkinkan kontrol yang tepat atas waktu penerimaan keluaran situs web. Hal ini termasuk menunggu permintaan URL tertentu, mengantisipasi kemunculan suatu elemen di situs, aktivitas pasca-gulir, dan banyak lagi. Memanfaatkan

ProxyScrape API Scraping Web dengan situs web statis:

Ini adalah ilustrasi tentang bagaimana Anda dapat menggabungkan API scraping web kami ke dalam skrip Python Anda untuk situs web statis, atau untuk memanggil titik akhir API yang telah Anda ekstrak dari panel inspeksi pada browser Anda:

import requests
import base64
import json

data = {
    "url": "https://books.toscrape.com/",
    "httpResponseBody": True
}

headers = {
    'Content-Type': 'application/json',
    'X-Api-Key': 'YOUR_API_KEY'
}

response = requests.post('https://api.proxyscrape.com/v3/accounts/freebies/scraperapi/request', headers=headers, json=data)

if response.status_code == 200:
    json_response = response.json()
    if 'browserHtml' in json_response['data']:
        print(json_response['data']['browserHtml'])
    else:
        print(base64.b64decode(json_response['data']['httpResponseBody']).decode())
else:
    print("Error:", response.status_code)

ProxyScrape API Web Scraping dengan situs web dinamis:

Berikut ini adalah contoh di mana kita menunggu favicon mulai dimuat. Itu biasanya merupakan permintaan terakhir untuk memulai di situs web uji yang kita gunakan.

import requests
import json

url = 'https://api.proxyscrape.com/v3/accounts/freebies/scraperapi/request'

headers = {
    'Content-Type': 'application/json',
    'X-Api-Key': '<your api key>'  # Make sure to replace <your api key> with your actual API key
}

payload = {
    "url": "https://books.toscrape.com/",
    "browserHtml": True,
    "actions": [
        {
            "action": "waitForRequest",
            "urlPattern": "https://books.toscrape.com/static/oscar/favicon.ico",
            "urlMatchingOptions": "exact"
        }
    ]
}

response = requests.post(url, headers=headers, json=payload)

# Print the response from the server
print(response.text)  # Prints the response body as text

Praktik Terbaik dalam Scraping Web

Terlepas dari alat atau API yang Anda pilih, menghormati persyaratan penggunaan situs web, membatasi tingkat permintaan untuk menghindari larangan IP, dan menggunakan proksi untuk pengikisan anonim adalah praktik terbaik yang penting. ProxyScrape Tidak hanya menyediakan proxy premium, residensial, seluler, dan khusus untuk kebutuhan tersebut, tetapi juga mendorong pengikisan web yang etis.

Kesimpulan

  • Apakah Anda mengambil web scraping sebagai hobi atau mengintegrasikannya ke dalam toolkit profesional Anda, memahami perbedaan antara situs web statis dan dinamis dan mengetahui cara scraping yang efektif untuk keduanya sangatlah penting. Dengan menggabungkan pustaka Python seperti Requests dan Playwright/Selenium dengan Beautifulsoup, Anda akan siap untuk menangani tantangan scraping web Anda.
  • Jika skrip scraping web Anda terdeteksi sebagai bot dan kemudian diblokir, atau jika Anda ingin mengoptimalkan dan menyederhanakan proses pengiriman permintaan, pertimbangkan untuk menjelajahi API Web Scraping kami. API ini dirancang untuk mengelola masalah ini secara efisien untuk Anda.
  • Ingat, masa depan web scraping sangat cerah, dan dengan tetap berpegang pada praktik terbaik dan memanfaatkan alat yang canggih, Anda dapat membuka dunia data yang menunggu untuk ditemukan.

Siap untuk memulai petualangan web scraping Anda? Daftar ke ProxyScrape hari ini dan jelajahi kemungkinan tak terbatas dari web dengan proksi khusus, proksi residensial, dan API Web Scraping yang komprehensif.