Sự khác biệt giữa trình thu thập dữ liệu BeautifulSoup và Scrapy?


134

Tôi muốn làm một trang web hiển thị so sánh giữa giá sản phẩm amazon và e-bay. Cái nào trong số này sẽ hoạt động tốt hơn và tại sao? Tôi có phần quen thuộc với BeautifulSoup nhưng không quá nhiều với trình thu thập dữ liệu Scrapy .


6
Tại sao bạn sẽ sử dụng trình thu thập thông tin khi cả hai trang web đó có API tuyệt vời? aws.amazon.com/python developer.ebay.com/common/api
Inbar Rose

5
Tôi đến từ Ấn Độ và tôi nghĩ Amazon-Api không hỗ trợ máy chủ Ấn Độ. không có api (miền địa phương) cho Ấn Độ. HOSTS = {'ca': 'ecs.amazonaws.ca', 'cn': 'webservice.amazon.cn', 'de': 'ecs.amazonaws.de', 'es': 'webservice.amazon.es' , 'fr': 'ecs.amazonaws.fr', 'it': 'webservice.amazon.it', 'jp': 'ecs.amazonaws.jp', 'uk': 'ecs.amazonaws.co.uk' , 'chúng tôi': 'ecs.amazonaws.com',}
Nishant Bhakta

11
Và nếu tôi muốn thu thập dữ liệu một số trang web khác không có API thì sao?
Nishant Bhakta

@InbarRose Sử dụng API sản phẩm của Amazon yêu cầu tài khoản Amazon Associate.
Zachary Ryan Smith

Câu trả lời:


231

Scrapy là một khung quét web-spider hoặc web , Bạn cung cấp cho Scrapy một URL gốc để bắt đầu thu thập thông tin, sau đó bạn có thể chỉ định các ràng buộc về số lượng (số) URL bạn muốn thu thập và tìm nạp, v.v. Nó là một khung hoàn chỉnh để quét web hoặc thu thập dữ liệu .

Trong khi

BeautifulSoup là một thư viện phân tích cú pháp cũng thực hiện khá tốt việc tìm nạp nội dung từ URL và cho phép bạn phân tích một số phần của chúng mà không gặp rắc rối. Nó chỉ tìm nạp nội dung của URL mà bạn cung cấp và sau đó dừng lại. Nó không thu thập dữ liệu trừ khi bạn tự đặt nó vào một vòng lặp vô hạn với các tiêu chí nhất định.

Nói một cách đơn giản, với Beautiful Soup bạn có thể xây dựng một thứ tương tự như Scrapy. Beautiful Soup là một thư viện trong khi Scrapy là một khung hoàn chỉnh .

Nguồn


1
cái nào nhanh hơn, ý tôi là tôi đang sử dụng BeautifulSoup và mất khoảng 10 giây để xóa dữ liệu? không phế liệu nhanh hơn beautifulsoup?
shuboy2014

Nếu bạn sử dụng beautifulsoup với mã chặn, phế liệu sẽ nhanh hơn miễn là có các yêu cầu độc lập để thực hiện, nhưng tôi đoán bạn cũng có thể sử dụng beautifulsoup với asyncio để đạt được hiệu suất tốt hơn.
dyeray

Tôi có thể nói, Scrapy cùng với BeautifulSoup sẽ siêu nhanh và bạn sẽ có thể tận dụng tốt nhất cả hai.
Raul

18

Tôi nghĩ cả hai đều tốt ... tôi đang làm một dự án ngay bây giờ sử dụng cả hai. Đầu tiên tôi loại bỏ tất cả các trang bằng cách sử dụng phế liệu và lưu nó vào bộ sưu tập mongodb bằng cách sử dụng các đường ống của chúng, đồng thời tải xuống các hình ảnh tồn tại trên trang. Sau đó, tôi sử dụng BeautifulSoup4 để thực hiện xử lý pos trong đó tôi phải thay đổi các giá trị thuộc tính và nhận một số thẻ đặc biệt.

Nếu bạn không biết sản phẩm nào bạn muốn, một công cụ tốt sẽ bị loại bỏ vì bạn có thể sử dụng trình thu thập thông tin của họ để chạy tất cả trang web amazon / ebay tìm kiếm sản phẩm mà không cần tạo vòng lặp rõ ràng.

Hãy xem tài liệu phế liệu, nó rất đơn giản để sử dụng.


Vì vậy, tôi có thể sử dụng Scrapy trên máy chủ web vì có nhiều phụ thuộc của nó như (Twisted, pywin32, pyOpenSSL ete ..). (Xin lỗi vì câu hỏi ngớ ngẩn này, tôi mới biết về con trăn)
Nishant Bhakta

Trên máy chủ web? Tôi không bao giờ thử điều đó ... tôi sử dụng nó trên shell, thực hiện "thu thập dữ liệu <tên của trình thu thập dữ liệu>" để chạy con nhện ... có lẽ bạn có thể sử dụng nó trên máy chủ, nhưng bạn phải gọi nó bằng python mô-đun quy trình con ( docs.python.org/2/l Library / sub process.html ). Như tôi đã nói không bao giờ thử điều này, nhưng có lẽ nó có thể hoạt động ... chỉ là một ghi chú, hãy sử dụng thông điệp tường trình từ phế liệu chỉ để bạn biết nơi nào có thể xảy ra trên trình thu thập thông tin của bạn (từ nhật ký nhập khẩu phế liệu).
rdenadai

4

Cả hai đều sử dụng để phân tích dữ liệu.

Phế liệu :

  • Scrapy là một khung thu thập dữ liệu web và quét web cấp độ nhanh, được sử dụng để thu thập dữ liệu trang web và trích xuất dữ liệu có cấu trúc từ các trang của họ.
  • Nhưng nó có một số hạn chế khi dữ liệu đến từ tập lệnh java hoặc tải động, chúng ta có thể vượt qua nó bằng cách sử dụng các gói như giật gân, selen, v.v.

BeautifulSoup :

  • Beautiful Soup là một thư viện Python để lấy dữ liệu ra khỏi các tệp HTML và XML.

  • chúng ta có thể sử dụng gói này để lấy dữ liệu từ tập lệnh java hoặc tải trang động.

Scrapy with BeautifulSoup là một trong những kết hợp tốt nhất chúng ta có thể làm việc để cạo các nội dung tĩnh và động


2

Cách tôi làm là sử dụng API của eBay / Amazon chứ không phải là phế liệu, và sau đó phân tích kết quả bằng BeautifulSoup.

Các API cung cấp cho bạn một cách chính thức để có được cùng một dữ liệu mà bạn đã nhận được từ trình thu thập dữ liệu phế liệu, không cần phải lo lắng về việc che giấu danh tính của mình, gây rối với proxy, v.v.


8
Câu hỏi rõ ràng yêu cầu các giải pháp mà API không có sẵn.
Rohanil

2

Scrapy Đây là một khung quét web đi kèm với hàng tấn các tính năng giúp việc quét từ dễ dàng hơn để chúng ta chỉ có thể tập trung vào thu thập dữ liệu logic. Một số điều yêu thích của tôi phế liệu chăm sóc cho chúng tôi dưới đây.

  • Xuất khẩu thức ăn : Về cơ bản, nó cho phép chúng tôi lưu dữ liệu ở các định dạng khác nhau như CSV, JSON, jsonlines và XML.
  • Quét không đồng bộ: Scrapy sử dụng khung xoắn cho phép chúng tôi truy cập nhiều url cùng một lúc trong đó mỗi yêu cầu được xử lý theo cách không chặn (Về cơ bản chúng tôi không phải đợi yêu cầu kết thúc trước khi gửi yêu cầu khác).
  • Bộ chọn : Đây là nơi chúng ta có thể so sánh phế liệu với món súp đẹp. Bộ chọn là những gì cho phép chúng tôi chọn dữ liệu cụ thể từ trang web như tiêu đề, div nhất định với tên lớp, v.v.). Scrapy sử dụng lxml để phân tích cú pháp cực kỳ nhanh hơn món súp đẹp.
  • Thiết lập proxy, tác nhân người dùng, tiêu đề, v.v: phế liệu cho phép chúng tôi thiết lập và xoay proxy và các tiêu đề khác một cách linh hoạt.

  • Mục Pipelines : Pipelines cho phép chúng tôi xử lý dữ liệu sau khi trích xuất. Ví dụ: chúng tôi có thể định cấu hình đường ống để đẩy dữ liệu đến máy chủ mysql của bạn.

  • Cookies: phế liệu tự động xử lý cookie cho chúng tôi.

Vân vân.

TLDR: phế liệu là một khung cung cấp mọi thứ mà người ta có thể cần để xây dựng các thu thập thông tin quy mô lớn. Nó cung cấp các tính năng khác nhau để che giấu sự phức tạp của việc thu thập dữ liệu web. người ta có thể chỉ cần bắt đầu viết trình thu thập dữ liệu web mà không phải lo lắng về gánh nặng thiết lập.

Beautiful Soup Beautiful Soup là gói Python để phân tích tài liệu HTML và XML . Vì vậy, với súp đẹp, bạn có thể phân tích một trang web đã được tải xuống. BS4 rất phổ biến và cũ. Không giống như phế liệu, Bạn không thể chỉ sử dụng món súp đẹp mắt để làm bánh bò . Bạn sẽ cần các thư viện khác như request, urllib, v.v. để tạo trình thu thập thông tin với bs4. Một lần nữa, điều này có nghĩa là bạn sẽ cần quản lý danh sách các url được thu thập, được thu thập, xử lý cookie, quản lý proxy, xử lý lỗi, tạo các hàm của riêng bạn để đẩy dữ liệu lên CSV, JSON, XML, v.v. Nếu bạn muốn tăng tốc hơn bạn sẽ phải sử dụng các thư viện khác như đa xử lý .

Tóm lại.

  • Scrapy là một khung công tác phong phú mà bạn có thể sử dụng để bắt đầu viết trình thu thập thông tin mà không gặp rắc rối.

  • Súp đẹp là một thư viện mà bạn có thể sử dụng để phân tích một trang web. Nó không thể được sử dụng một mình để cạo web.

Bạn chắc chắn nên sử dụng phế liệu cho trang web so sánh giá sản phẩm amazon và e-bay của bạn. Bạn có thể xây dựng cơ sở dữ liệu của url và chạy trình thu thập thông tin mỗi ngày (công việc cron, Celery để lập lịch thu thập thông tin) và cập nhật giá trên cơ sở dữ liệu của bạn. Cách này trang web của bạn sẽ luôn lấy từ cơ sở dữ liệu và trình thu thập thông tin và cơ sở dữ liệu sẽ hoạt động như các thành phần riêng lẻ.


1

BeautifulSoup là một thư viện cho phép bạn trích xuất thông tin từ một trang web.

Mặt khác, phế liệu là một khung, thực hiện những điều trên và nhiều thứ khác mà bạn có thể cần trong dự án cạo của bạn như các đường ống để lưu dữ liệu.

Bạn có thể kiểm tra blog này để bắt đầu với Scrapy https://www.inkoop.io/blog/web-scraping-USE-python-and-scrapy/


0

Sử dụng phế liệu, bạn có thể tiết kiệm hàng tấn mã và bắt đầu với lập trình có cấu trúc, Nếu bạn không thích bất kỳ phương pháp viết sẵn nào của scacco thì BeautifulSoup có thể được sử dụng thay cho phương pháp phế liệu. Dự án lớn có cả hai lợi thế.


0

Sự khác biệt là rất nhiều và việc lựa chọn bất kỳ công cụ / công nghệ nào phụ thuộc vào nhu cầu cá nhân.

Một số khác biệt chính là:

  1. BeautifulSoup tương đối dễ học hơn Scrapy.
  2. Các tiện ích mở rộng, hỗ trợ, cộng đồng lớn hơn cho Scrapy so với BeautifulSoup.
  3. Scrapy nên được coi là Spider trong khi BeautifulSoup là Parser .
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.