BeautifulSoup ve Scrapy tarayıcısı arasındaki fark nedir?


134

Amazon ve e-bay ürün fiyatı arasındaki karşılaştırmayı gösteren bir web sitesi yapmak istiyorum. Bunlardan hangisi daha iyi çalışır ve neden? BeautifulSoup'a biraz aşinayım ama Scrapy tarayıcısına pek benzemiyorum .


6
Her iki site de harika bir API'ya sahip olduğunda neden tarayıcı kullanıyorsunuz? aws.amazon.com/python developer.ebay.com/common/api
Inbar Rose

5
Hindistan'lıyım ve Amazon-Api'nin Hindistan ana bilgisayarını desteklemediğini düşünüyorum . Hindistan için api (yerel) yoktur . 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' , 'biz': 'ecs.amazonaws.com',}
Nishant Bhakta

11
Ve API olmayan başka bir siteyi taramak istersem ne olur?
Nishant Bhakta

@InbarRose Amazon'un ürün API'sını kullanmak için bir Amazon Associate hesabı gerekir.
Zachary Ryan Smith

Yanıtlar:


231

Scrapy bir Web-örümcek veya web kazıyıcı çerçevesidir , Scrapy'ye taramaya başlamak için bir kök URL verirsiniz, daha sonra taramak ve almak istediğiniz URL'lerin kaç (sayısı) üzerinde kısıtlamalar belirtebilirsiniz. Web kazıma veya tarama için eksiksiz bir çerçevedir .

Süre

BeautifulSoup , URL'den içerik almak için oldukça iyi bir iş de yapan ve bunların bazı bölümlerini sorunsuz bir şekilde ayrıştırmanıza izin veren bir ayrıştırma kütüphanesidir . Yalnızca verdiğiniz URL'nin içeriğini getirir ve sonra durur. Belirli ölçütlere sahip sonsuz bir döngüye elle koymadığınız sürece tarama yapmaz.

Basit bir deyişle, Güzel Çorba ile Scrapy'ye benzer bir şey inşa edebilirsiniz. Güzel Çorba bir kütüphane , Scrapy ise tam bir çerçevedir .

Kaynak


1
hangi daha hızlı, yani BeautifulSoup kullanıyorum ve veri hurda için yaklaşık 10 saniye sürer? terapi güzel çorbadan daha hızlı mı?
shuboy2014

Engelleme koduyla beautifulsoup kullanıyorsanız, bağımsız istekte bulunulduğu sürece skrapy daha hızlı olmalıdır, ancak daha iyi performans elde etmek için asyncio ile beautifulsoup da kullanabilirsiniz.
dyeray

Şunu söyleyebilirim, BeautifulSoup ile birlikte Scrapy süper hızlı olacak ve her ikisinden de en iyi şekilde yararlanabileceksiniz.
Rahul

18

Bence her ikisi de iyi ... şu anda ikisini de kullanan bir proje yapıyorum. İlk önce scrapy kullanarak tüm sayfaları kazıyordum ve boru hatlarını kullanarak bir mongodb koleksiyonuna kaydedip sayfadaki görüntüleri de indiriyorum. Bundan sonra ben öznitelik değerlerini değiştirmek ve bazı özel etiketleri almak gerekir bir pos işleme yapmak için BeautifulSoup4 kullanın.

Hangi sayfaları istediğiniz ürünleri bilmiyorsanız, iyi bir araç scrap olacaktır çünkü tarayıcılarını, açık bir döngü yapmadan ürünleri arayan tüm amazon / ebay web sitesini çalıştırmak için kullanabilirsiniz.

Terapi belgelerine bir göz atın, kullanımı çok basit.


Web sunucusunda Scrapy'yi kullanabilir miyim , çünkü bunun gibi birçok bağımlılık var (Twisted, pywin32, pyOpenSSL ete ..). (Bu aptal soru için özür dilerim, python için yeniyim)
Nishant Bhakta

Web sunucusunda mı? Bunu asla denemem ... örümcek üzerinde kullanmak, örümcek çalıştırmak için "scrapy crawl <paletli adı>" yürütmek ... belki sunucuda bunu kullanabilirsiniz, ama bunu python kullanarak çağırmak zorunda alt işlem modülü ( docs.python.org/2/library/subprocess.html ). Dediğim gibi bunu asla deneyin, ama belki de işe yarayabilir ... sadece bir not, sadece scraper (scrap ithalat günlüğünden) hatalar nerede olabileceğini bilmek için scrapy günlük mesajı kullanın.
rdenadai

4

Her ikisi de verileri ayrıştırmak için kullanıyor.

Terapi :

  • Scrapy, web sitelerini taramak ve sayfalarından yapılandırılmış verileri ayıklamak için kullanılan hızlı bir üst düzey web tarama ve web kazıma çerçevesidir.
  • Ancak veriler java komut dosyasından veya dinamik olarak yüklenirken bazı sınırlamalara sahiptir, sıçrama, selenyum vb.Gibi paketleri kullanarak gelebiliriz.

BeautifulSoup :

  • Güzel Çorba HTML ve XML dosyalarından veri çekmek için bir Python kütüphanesidir.

  • java komut dosyasından veri almak veya sayfaları dinamik olarak yüklemek için bu paketi kullanabiliriz.

BeautifulSoup ile Scrapy, statik ve dinamik içerikleri kazımak için birlikte çalışabileceğimiz en iyi kombinasyonlardan biridir


2

Bunu yapmanın yolu, terapi yerine eBay / Amazon API'lerini kullanmak ve daha sonra sonuçları BeautifulSoup kullanarak ayrıştırmaktır.

API'lar, kimliğinizi gizleme, proxy'lerle ilgili karışıklık vb.


8
Soru, açıkça API'lerin bulunmadığı durumlarda çözümler istiyor.
Rohanil

2

Terapi Sadece kazıma mantığına odaklanabilmemiz için kazımayı kolaylaştıran tonlarca güzellikle birlikte gelenbir web kazıma çerçevesidir . Terapinin bizim için en sevdiği şeylerden bazıları aşağıda.

  • Feed dışa aktarma: Temel olarak verileri CSV, JSON, jsonlines ve XML gibi çeşitli biçimlerde kaydetmemize olanak tanır.
  • Eşzamansız kazıma: Terapi, her isteğin engellemesiz bir şekilde işlendiği birden fazla url'yi ziyaret etme gücü veren bükülmüş bir çerçeve kullanır (Temel olarak, başka bir istek göndermeden önce bir isteğin bitmesini beklemek zorunda değiliz).
  • Seçiciler : Burası, terapi ile güzel çorbayı karşılaştırabileceğimiz yerdir. Seçiciler, web sayfasından başlık, sınıf adıyla belirli div vb. Gibi belirli verileri seçmemize olanak tanır. Scrapy, güzel çorbadan son derece hızlı olan ayrıştırma için lxml kullanır.
  • Proxy, kullanıcı aracısı, başlıklar vb. Ayarlamak: scrapy, proxy'yi ve diğer başlıkları dinamik olarak ayarlamamıza ve döndürmemize olanak tanır.

  • Madde Boru Hatları : Boru hatları, çıkarıldıktan sonra verileri işlememizi sağlar. Örneğin, boru hattını verileri mysql sunucunuza iletecek şekilde yapılandırabiliriz.

  • Çerezler: scrapy çerezleri bizim için otomatik olarak işler.

vb.

TLDR: terapi, büyük ölçekli taramalar yapmak için ihtiyaç duyulabilecek her şeyi sağlayan bir çerçevedir. Web'leri taramanın karmaşıklığını gizleyen çeşitli özellikler sunar. bir kurulum yükü hakkında endişelenmeden web tarayıcıları yazmaya başlayabilirsiniz.

Güzel çorba Güzel Çorba HTML ve XML belgelerini ayrıştırmak için bir Python paketidir. Böylece Güzel çorba ile indirilmiş bir web sayfasını ayrıştırabilirsiniz. BS4 çok popüler ve eskidir. Terapiden farklı olarak, sadece çorba yapmak için güzel çorba kullanamazsınız . Bs4 ile tarayıcılar yapmak için istek, urllib vb. Gibi diğer kütüphanelere ihtiyacınız olacaktır. Yine, bu, taranan URL'lerin listesini, taranması, çerezleri işlemesi, proxy'yi yönetmesi, hataları ele alması, verileri CSV, JSON, XML vb. daha çok işlem gibi diğer kütüphaneleri kullanmanız gerekecektir.

Sonuç olarak.

  • Scrapy, hiçbir karmaşa olmadan tarayıcılar yazmaya başlamak için kullanabileceğiniz zengin bir çerçevedir.

  • Güzel çorba, bir web sayfasını ayrıştırmak için kullanabileceğiniz bir kütüphanedir. Web'i kazımak için tek başına kullanılamaz.

Amazon ve e-bay ürün fiyat karşılaştırma web siteniz için kesinlikle terapi kullanmalısınız. Bir URL veritabanı oluşturabilir ve her gün tarayıcıyı çalıştırabilirsiniz (cron işleri, taramayı zamanlamak için kereviz) ve veritabanınızdaki fiyatı güncelleyebilirsiniz.Bu şekilde web siteniz her zaman veritabanından çekilecek ve tarayıcı ve veritabanı ayrı bileşenler olarak işlev görecektir.



0

Kullanılması scrapy sonra scapy öncesi yazılı yöntemlerden herhangi sevmiyorum Eğer kod ton tasarruf ve yapısal programlama ile başlayabilir BeautifulSoup scrapy yöntemi yerine kullanılabilir. Büyük proje her iki avantajı da alır.


0

Farklılıklar çoktur ve herhangi bir araç / teknoloji seçimi bireysel ihtiyaçlara bağlıdır.

Birkaç önemli fark:

  1. BeautifulSoup, Scrapy'den daha kolay öğrenilir.
  2. Uzantılar, destek, topluluk Scrapy için BeautifulSoup'tan daha büyük.
  3. BeautifulSoup bir Ayrıştırıcı iken, Terapi Örümcek olarak düşünülmelidir .
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.