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.
Untuk menentukan apakah sebuah situs web bersifat statis atau 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.
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:
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.
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:
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:
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()
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())
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.
ProxyScrape menawarkan API Web Scraping yang menyederhanakan ekstraksi data dari situs web statis dan dinamis.
Fitur-fitur API meliputi:
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)
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
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.
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.