Pengikis Web Python Tingkat Lanjut

Bangun pengikis web tingkat lanjut dengan Python. Pelajari cara mengekstrak data halaman, menangani blok agen pengguna, mengelola batas kapasitas, dan menyusun keluaran.

Coba di Editor

Ikhtisar

Pengikisan web melibatkan pengambilan halaman web secara terprogram dan menguraikan struktur HTML-nya untuk mengekstrak data tertentu. Dalam Python, hal ini biasanya dilakukan dengan menggunakan `requests` dan `BeautifulSoup`.

Pencakar tingkat lanjut memerlukan konfigurasi yang kuat. Meminta halaman saja dapat mengakibatkan pemblokiran atau larangan IP, sehingga memerlukan penyesuaian header seperti Agen-Pengguna khusus dan menimbulkan interval penundaan acak.

Contoh interaktif ini meniru pengambilan data tiruan dengan validasi. Ini menunjukkan cara menemukan kontainer bersarang, menangani waktu tunggu jaringan, dan menyusun data keluaran ke dalam daftar yang bersih.

Kode & Output Eksekusi

Rutinitas pengikisan web yang menampilkan header khusus, manajemen batas waktu, dan struktur parser HTML.

adv_scraper.py
Coba di Editor
import requests
from bs4 import BeautifulSoup
import time

def scrape_quotes():
    # Mock URL designed for scraping practice
    url = "https://quotes.toscrape.com/"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
    }
    
    print(f"Initiating request to: {url}...")
    try:
        # Request with timeout protection
        response = requests.get(url, headers=headers, timeout=5)
        response.raise_for_status()
        
        soup = BeautifulSoup(response.text, "html.parser")
        quotes = soup.find_all("div", class_="quote", limit=3)
        
        results = []
        for q in quotes:
            text = q.find("span", class_="text").text
            author = q.find("small", class_="author").text
            tags = [t.text for t in q.find_all("a", class_="tag")]
            results.append({
                "quote": text,
                "author": author,
                "tags": tags
            })
            
        print("Scrape completed successfully!\n")
        for idx, item in enumerate(results):
            print(f"Quote {idx+1}: {item['quote']}")
            print(f"  Author: {item['author']}")
            print(f"  Tags:   {', '.join(item['tags'])}\n")
            
    except requests.exceptions.RequestException as e:
        print(f"Network error occurred: {e}")

scrape_quotes()
Keluaran Terminal
Initiating request to: https://quotes.toscrape.com/...
Scrape completed successfully!

Quote 1: “The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”
  Author: Albert Einstein
  Tags:   change, deep-thoughts, thinking

Quote 2: “It is our choices, Harry, that show what we truly are, far more than our abilities.”
  Author: J.K. Rowling
  Tags:   abilities, choices

Quote 3: “There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”
  Author: Albert Einstein
  Tags:   inspirational, life, live, miracle

Implementasi Langkah demi Langkah

  • Pemantauan dan pelacakan harga di seluruh katalog belanja
  • Analisis sentimen dengan mengumpulkan data review dari forum
  • Pembuatan kumpulan data penelitian akademis

Pertanyaan yang Sering Diajukan

Apa itu robots.txt?

File teks yang ditempatkan di akar domain yang menunjukkan jalur mana yang boleh atau dilarang dirayapi oleh robot pencarian dan crawler. Anda harus selalu membacanya sebelum menulis scraper.

Bagaimana cara mengikis halaman yang dirender secara dinamis melalui JavaScript?

Permintaan standar hanya mengambil HTML statis. Untuk mengurai halaman yang banyak Javascript, Anda harus menggunakan alat otomatisasi browser seperti Playwright atau Selenium.

Topik Terkait