Perbedaan antara crawler BeautifulSoup dan Scrapy?

139

Saya ingin membuat website yang menunjukkan perbandingan harga produk amazon dan e-bay. Manakah dari berikut ini yang akan bekerja lebih baik dan mengapa? Saya agak akrab dengan BeautifulSoup tetapi tidak begitu banyak dengan crawler Scrapy .

Nishant Bhakta
sumber
6
Mengapa Anda menggunakan perayap jika kedua situs tersebut memiliki API yang hebat? aws.amazon.com/python developer.ebay.com/common/api
Inbar Rose
5
saya dari India dan menurut saya Amazon-Api tidak mendukung host india. tidak ada api (lokal) untuk india. HOSTS = {'ca': 'ecs.amazonaws.ca', 'cn': 'webservices.amazon.cn', 'de': 'ecs.amazonaws.de', 'es': 'webservices.amazon.es' , 'fr': 'ecs.amazonaws.fr', 'it': 'webservices.amazon.it', 'jp': 'ecs.amazonaws.jp', 'uk': 'ecs.amazonaws.co.uk' , 'us': 'ecs.amazonaws.com',}
Nishant Bhakta
11
Dan bagaimana jika saya ingin merayapi situs lain yang tidak memiliki API?
Nishant Bhakta
@InbarRose Menggunakan API produk Amazon memerlukan akun Amazon Associate.
Zachary Ryan Smith
bs4 vs Scrapy
Moein Kameli

Jawaban:

237

Scrapy adalah kerangka web-spider atau web scraper , Anda memberi Scrapy URL root untuk mulai merayapi, kemudian Anda dapat menentukan batasan tentang berapa banyak (jumlah) URL yang ingin Anda rayapi dan ambil, dll. Ini adalah kerangka kerja lengkap untuk web-scraping atau perayapan .

Sementara

BeautifulSoup adalah pustaka parsing yang juga melakukan pekerjaan yang cukup baik untuk mengambil konten dari URL dan memungkinkan Anda untuk mengurai bagian-bagian tertentu tanpa kerumitan. Ini hanya mengambil konten dari URL yang Anda berikan dan kemudian berhenti. Itu tidak merayapi kecuali Anda secara manual memasukkannya ke dalam loop tak terbatas dengan kriteria tertentu.

Dengan kata sederhana, dengan Beautiful Soup Anda dapat membuat sesuatu yang mirip dengan Scrapy. Beautiful Soup adalah perpustakaan sementara Scrapy adalah kerangka kerja yang lengkap .

Sumber

Medeiros
sumber
1
mana yang lebih cepat, maksud saya, saya menggunakan BeautifulSoup dan membutuhkan sekitar 10 detik untuk menghapus data? apakah scrapy lebih cepat dari pada beautifulsoup?
shuboy2014
Jika Anda menggunakan beautifulsoup dengan kode pemblokiran, scrapy seharusnya lebih cepat selama ada permintaan independen yang harus dibuat, tetapi saya rasa Anda juga dapat menggunakan beautifulsoup dengan asyncio untuk mencapai performa yang lebih baik.
dyeray
Menurut saya, Scrapy bersama BeautifulSoup akan menjadi super cepat dan Anda akan bisa mendapatkan yang terbaik dari keduanya.
Rahul
18

Saya pikir keduanya bagus ... saya sedang mengerjakan proyek sekarang yang menggunakan keduanya. Pertama saya scrap semua halaman menggunakan scrapy dan menyimpannya di koleksi mongodb menggunakan pipeline mereka, juga mendownload gambar yang ada di halaman tersebut. Setelah itu saya menggunakan BeautifulSoup4 untuk membuat pemrosesan pos di mana saya harus mengubah nilai atribut dan mendapatkan beberapa tag khusus.

Jika Anda tidak tahu produk halaman mana yang Anda inginkan, alat yang bagus tidak akan berguna karena Anda dapat menggunakan crawler mereka untuk menjalankan semua situs web amazon / ebay mencari produk tanpa membuat loop for eksplisit.

Lihatlah dokumentasi scrapy, ini sangat mudah digunakan.

rdenadai
sumber
Jadi saya dapat menggunakan Scrapy di web server karena ada banyak dependensi seperti (Twisted, pywin32, pyOpenSSL ete ..). (Maaf untuk pertanyaan konyol ini, saya baru mengenal python)
Nishant Bhakta
Di server web? Saya tidak pernah mencobanya ... saya menggunakannya di shell, jalankan "scrapy crawl <name of crawler>" untuk menjalankan spider ... mungkin Anda bisa menggunakan ini di server, tetapi Anda harus memanggil ini menggunakan python modul subprocess ( docs.python.org/2/library/subprocess.html ). Seperti yang saya katakan jangan pernah mencoba ini, tetapi mungkin itu bisa berhasil ... hanya sebuah catatan, gunakan pesan log dari scrapy hanya untuk Anda mengetahui di mana kesalahan mungkin terjadi pada crawler Anda (dari log impor scrapy).
rdenadai
4

Keduanya digunakan untuk mengurai data.

Scrapy :

  • Scrapy adalah perayapan web tingkat tinggi yang cepat dan kerangka kerja scraping web, yang digunakan untuk merayapi situs web dan mengekstrak data terstruktur dari laman mereka.
  • Tetapi memiliki beberapa keterbatasan ketika data berasal dari java script atau memuat secara dinamis, kita dapat mengatasinya dengan menggunakan paket seperti splash, selenium dll.

BeautifulSoup :

  • Beautiful Soup adalah pustaka Python untuk menarik data dari file HTML dan XML.

  • kita dapat menggunakan paket ini untuk mendapatkan data dari java script atau memuat halaman secara dinamis.

Scrapy with BeautifulSoup adalah salah satu kombo terbaik yang dapat kami gunakan untuk mengorek konten statis dan dinamis

Arun Augustine
sumber
2

Cara saya melakukannya adalah dengan menggunakan eBay / Amazon API daripada scrapy, dan kemudian mengurai hasilnya menggunakan BeautifulSoup.

API memberi Anda cara resmi untuk mendapatkan data yang sama yang akan Anda dapatkan dari perayap scrapy, tanpa perlu khawatir menyembunyikan identitas Anda, mengacaukan proxy, dll.

baldnbad.dll
sumber
8
Pertanyaan tersebut dengan jelas menanyakan solusi di mana API tidak tersedia.
Rohanil
Juga penasaran. Jika Anda benar-benar menggunakan API (yang mengembalikan JSON) mengapa Anda membutuhkan Beautiful Soup untuk mengurai?
Jay Stevens
2

Scrapy It adalah kerangka web scraping yang dilengkapi dengan banyak hal yang membuat scraping lebih mudah sehingga kita dapat fokus pada logika perayapan saja. Beberapa hal favorit saya yang perlu diperhatikan oleh scrapy untuk kami ada di bawah ini.

  • Ekspor umpan : Pada dasarnya memungkinkan kami untuk menyimpan data dalam berbagai format seperti CSV, JSON, jsonlines, dan XML.
  • Scraping Asynchronous: Scrapy menggunakan framework twisted yang memberi kita kekuatan untuk mengunjungi beberapa url sekaligus di mana setiap permintaan diproses dengan cara yang tidak memblokir (Pada dasarnya kita tidak perlu menunggu permintaan selesai sebelum mengirim permintaan lain).
  • Penyeleksi : Di sinilah kita bisa membandingkan scrapy dengan sup yang indah. Selektor memungkinkan kita untuk memilih data tertentu dari halaman web seperti heading, div tertentu dengan nama kelas, dll.). Scrapy menggunakan lxml untuk parsing yang sangat cepat dibandingkan sup yang indah.
  • Setting proxy, user agent, header dll: scrapy memungkinkan kita untuk mengatur dan merotasi proxy, dan header lainnya secara dinamis.

  • Item Pipelines : Pipelines memungkinkan kami memproses data setelah ekstraksi. Misalnya kita dapat mengkonfigurasi pipeline untuk mendorong data ke server mysql Anda.

  • Cookie: scrapy secara otomatis menangani cookie untuk kami.

dll.

TLDR: scrapy adalah kerangka kerja yang menyediakan semua yang mungkin dibutuhkan seseorang untuk membuat perayapan skala besar. Ini menyediakan berbagai fitur yang menyembunyikan kerumitan perayapan web. seseorang dapat dengan mudah mulai menulis perayap web tanpa mengkhawatirkan beban penyiapan.

Beautiful soup Beautiful Soup adalah paket Python untuk mengurai dokumen HTML dan XML . Jadi dengan Beautiful soup Anda bisa mengurai halaman web yang sudah diunduh. BS4 sangat populer dan tua. Tidak seperti scrapy, Anda tidak bisa menggunakan sup cantik hanya untuk membuat crawl . Anda akan membutuhkan pustaka lain seperti request, urllib dll untuk membuat crawler dengan bs4. Sekali lagi, ini berarti Anda perlu mengelola daftar url yang sedang dirayapi, untuk dirayapi, menangani cookie, mengelola proxy, menangani kesalahan, membuat fungsi Anda sendiri untuk mendorong data ke CSV, JSON, XML, dll. Jika Anda ingin mempercepat daripada Anda harus menggunakan pustaka lain seperti multiprocessing .

Untuk menyimpulkan.

  • Scrapy adalah kerangka kerja kaya yang dapat Anda gunakan untuk mulai menulis crawler tanpa kerumitan apa pun.

  • Sup yang indah adalah pustaka yang dapat Anda gunakan untuk mengurai halaman web. Itu tidak dapat digunakan sendiri untuk mengikis web.

Anda pasti harus menggunakan scrapy untuk situs web perbandingan harga produk amazon dan e-bay Anda. Anda dapat membangun basis data url dan menjalankan perayap setiap hari (tugas cron, Celery untuk penjadwalan penjelajahan) dan memperbarui harga pada basis data Anda. Dengan cara ini situs web Anda akan selalu menarik dari basis data dan perayap dan basis data akan bertindak sebagai komponen individual.

Amit
sumber
1

BeautifulSoup adalah pustaka yang memungkinkan Anda mengekstrak informasi dari halaman web.

Scrapy di sisi lain adalah kerangka kerja, yang melakukan hal di atas dan banyak lagi hal yang mungkin Anda perlukan dalam proyek scraping Anda seperti pipeline untuk menyimpan data.

Anda dapat memeriksa blog ini untuk memulai dengan Scrapy https://www.inkoop.io/blog/web-scraping-using-python-and-scrapy/

Jaskaran Singh
sumber
0

Menggunakan scrapy Anda dapat menghemat banyak kode dan mulai dengan pemrograman terstruktur. Jika Anda tidak menyukai metode scapy yang sudah ditulis sebelumnya, BeautifulSoup dapat digunakan sebagai pengganti metode scrapy. Proyek besar mengambil kedua keuntungan tersebut.

ethirajit
sumber
0

Perbedaannya banyak dan pemilihan alat / teknologi apa pun tergantung pada kebutuhan individu.

Beberapa perbedaan utama adalah:

  1. BeautifulSoup relatif mudah dipelajari daripada Scrapy.
  2. Ekstensi, dukungan, komunitas lebih besar untuk Scrapy daripada untuk BeautifulSoup.
  3. Scrapy harus dianggap sebagai Spider sedangkan BeautifulSoup adalah Parser .
krish___na
sumber