Skip to main content

ArtinTech Solution

Python source code on a monitor

🌐 Baca artikel ini dalam bahasa lain: English · Español · Deutsch · Français · Bahasa Melayu · العربية · 简体中文 · 日本語

Web scraping ialah proses mengekstrak data daripada laman web secara automatik, untuk penyelidikan, pemantauan harga, senarai prospek, analisis pasaran atau menyalurkan data ke sistem dalaman. Dalam Python, dua alat mendominasi perbincangan: BeautifulSoup dan Scrapy.

Kedua-duanya sering dibandingkan seolah-olah pesaing, tetapi sebenarnya menyelesaikan masalah berbeza. BeautifulSoup ialah pustaka untuk menghurai HTML. Scrapy ialah rangka kerja lengkap untuk merangkak laman web secara besar-besaran. Panduan ini menerangkan perbezaannya dengan kod sebenar dan membantu anda memilih alat yang sesuai.

Apa itu BeautifulSoup?

BeautifulSoup (pakej bs4) membaca dokumen HTML atau XML dan menukarnya menjadi pepohon yang boleh dicari dengan kaedah Python ringkas seperti find(), find_all() dan pemilih CSS melalui select(). Ia tidak memuat turun halaman sendiri, jadi hampir selalu digandingkan dengan pustaka HTTP seperti Requests.

  • Sangat mudah dipelajari, walaupun untuk pemula Python.
  • Bertoleransi terhadap HTML yang bersepah dan tidak sempurna.
  • Berfungsi dengan penghurai berbeza: html.parser terbina dalam, lxml yang pantas, atau html5lib untuk penghuraian seperti pelayar.
  • Sesuai untuk skrip kecil dan tugasan sekali sahaja.

Apa itu Scrapy?

Scrapy ialah rangka kerja sumber terbuka untuk membina perangkak web, yang dipanggil spider. Ia mengendalikan keseluruhan aliran kerja: menghantar permintaan, mengikut pautan, menghurai respons, membersihkan data dan mengeksportnya.

  • Tak segerak secara reka bentuk. Scrapy menghantar banyak permintaan serentak, menjadikannya jauh lebih pantas pada laman besar.
  • Adab terbina dalam. Mematuhi robots.txt, AutoThrottle, kelewatan muat turun dan cubaan semula hanyalah tetapan mudah.
  • Item pipelines membersihkan, mengesahkan dan menyimpan data dalam pangkalan data atau fail.
  • Feed exports menulis JSON, CSV atau XML dengan satu arahan.
  • Middlewares membolehkan anda menyesuaikan pengepala, proksi, cache dan pengendalian ralat.

Scraper yang sama dengan kedua-dua alat

Contoh di bawah mengumpul setiap petikan dan pengarang daripada quotes.toscrape.com, laman yang dibina untuk berlatih scraping. Di kiri ialah Requests dengan BeautifulSoup, di kanan spider Scrapy.

Scraper petikan yang sama ditulis dengan Requests + Beautiful Soup dan dengan Scrapy
Scraper yang sama dengan kedua-dua alat. BeautifulSoup mengambil satu halaman pada satu masa dalam gelung; Scrapy menjadualkan permintaan sendiri dan mengikut penomboran halaman dengan satu baris.

Kedua-duanya menghasilkan data yang sama. Perbezaan jelas apabila tugas membesar: skrip BeautifulSoup menunggu setiap halaman sebelum meminta yang seterusnya, manakala Scrapy memuat turun banyak halaman secara selari dan menguruskan cubaan semula, pendikitan dan eksport untuk anda.

Untuk mencubanya sendiri:

pip install requests beautifulsoup4
python bs4_quotes.py

pip install scrapy
scrapy runspider quotes_spider.py -o quotes.json

Perbandingan bersebelahan

BeautifulSoupScrapy
JenisPustaka penghurai HTMLRangka kerja merangkak lengkap
Keluk pembelajaranSangat landaiSederhana
Memuat turun halamanTidak, perlukan Requests atau httpxYa, terbina dalam
Kelajuan untuk banyak halamanPerlahan kecuali anda menambah keserentakan sendiriPantas, tak segerak secara lalai
Mengikut pautanManualTerbina dalam
Eksport dataManualJSON, CSV dan XML terbina dalam
Pendikitan dan cubaan semulaManualTerbina dalam
Halaman dijana JavaScriptTidakTidak, perlukan tambahan
Terbaik untukSkrip kecil dan tugasan sekali sahajaRangkakan besar atau berulang

Bila memilih BeautifulSoup

  • Anda perlukan data daripada beberapa halaman sahaja, atau scraping sekali sahaja.
  • Anda sedang belajar web scraping atau Python.
  • Anda sudah mempunyai HTML, contohnya daripada respons API, e-mel atau fail yang disimpan, dan hanya perlu menghurainya.
  • Anda mahu menambah langkah scraping kecil dalam skrip atau aplikasi sedia ada.

Bila memilih Scrapy

  • Anda perlu merangkak ratusan atau ribuan halaman.
  • Scraper akan dijalankan secara berkala dan mesti boleh dipercayai.
  • Anda perlu mengikut penomboran halaman dan pautan di seluruh laman.
  • Data mesti dibersihkan, disahkan dan disimpan secara berstruktur.
  • Anda mahu kawalan adab terbina dalam supaya tidak membebankan laman sasaran.

Bagaimana dengan laman web yang banyak JavaScript?

BeautifulSoup mahupun Scrapy tidak menjalankan JavaScript. Jika kandungan yang anda perlukan dimuatkan oleh JavaScript selepas halaman dibuka, anda ada dua pilihan:

  1. Cari permintaan API yang dibuat oleh halaman dalam alat pembangun pelayar anda. Memanggil titik akhir JSON itu secara langsung biasanya lebih pantas dan stabil daripada scraping HTML.
  2. Gunakan pelayar tanpa kepala seperti Playwright atau Selenium. Playwright boleh digabungkan dengan Scrapy melalui pemalam scrapy-playwright, atau digunakan sendiri bersama BeautifulSoup untuk penghuraian.

Bolehkah kedua-duanya digunakan bersama?

Boleh. Scrapy mempunyai pemilih pantas sendiri, tetapi tiada halangan untuk menghantar respons kepada BeautifulSoup dalam callback Scrapy jika anda lebih suka API-nya. Banyak pasukan membina prototaip dengan Requests dan BeautifulSoup, kemudian beralih ke Scrapy apabila tugas perlu diskalakan.

Scraping secara bertanggungjawab

Mampu melakukan scraping pada sesebuah laman tidak bermakna anda dibenarkan. Sebelum bermula:

  • Baca terma perkhidmatan laman dan hormati fail robots.txt-nya.
  • Hadkan kadar permintaan supaya laman tidak menjadi perlahan untuk pelawat sebenar.
  • Jangan kumpul data peribadi tanpa asas undang-undang. Undang-undang seperti GDPR dan PDPA turut terpakai pada data hasil scraping.
  • Utamakan API rasmi jika ada.

Perlukan data daripada sistem lain dalam sistem anda?

Kami membina integrasi, pengimport dan alat dalaman yang mengumpul data secara bertanggungjawab dan menyalurkannya ke papan pemuka dan pangkalan data anda.

Keputusan

Untuk belajar, projek kecil dan pengekstrakan data pantas, BeautifulSoup ialah titik permulaan terbaik: ringkas, bertoleransi dan mudah dibaca. Untuk apa-apa yang besar, berulang atau kritikal kepada perniagaan, Scrapy ialah alat yang lebih baik, kerana ia memberi kelajuan, struktur dan kawalan adab yang sebaliknya perlu anda bina sendiri.

Jika data hasil scraping perlu dimasukkan ke papan pemuka, CRM atau ERP anda sendiri, scraper hanyalah satu bahagian sistem. Di ArtinTech Solution, kami membina sistem dalaman tersuai dan aplikasi web yang mengumpul, mengesahkan dan menggunakan data seperti ini. Ceritakan projek anda.

Soalan lazim

Adakah Scrapy lebih pantas daripada BeautifulSoup?

Untuk merangkak banyak halaman, ya, kerana Scrapy menghantar permintaan serentak manakala skrip asas Requests dan BeautifulSoup mengambil satu halaman pada satu masa. Untuk menghurai satu dokumen, perbezaannya kecil.

Adakah BeautifulSoup sesuai untuk pemula?

Ya. Ia salah satu cara paling mudah untuk mempelajari struktur HTML dan cara mengekstrak data daripadanya dengan Python.

Bolehkah Scrapy melakukan scraping pada laman JavaScript?

Tidak dengan sendirinya. Gunakan API asas laman jika boleh, atau tambah pelayar tanpa kepala melalui pemalam scrapy-playwright.

Adakah web scraping sah di sisi undang-undang?

Ia bergantung pada terma laman, jenis data dan undang-undang di negara anda. Scraping data awam yang bukan peribadi secara sederhana biasanya berisiko lebih rendah, tetapi sentiasa semak terma dan dapatkan nasihat undang-undang untuk projek komersial.

Share this article