1

BeautifulSoup和Scrapy爬虫有何区别?

 1 year ago
source link: https://www.2808proxy.com/data-crawling-for-beginners/scrapy-crawler/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

BeautifulSoup和Scrapy爬虫有何区别?

我们可能会抓取与对比同一性质不同网站的信息,比如建立一个显示亚马逊和 e-bay 的比价站,那么我们选择BeautifulSoup 还是 Scrapy?

一、BeautifulSoup 和 Scrapy简介

Scrapy是一个网络爬虫框架,您给 Scrapy 一个 URL 便可以开始爬取,然后您可以指定要爬取和获取的 URL 数量(数量)的限制等。它是一个完整的网络抓取或抓取框架。

BeautifulSoup是一个解析库,它还可以很好地从 URL 中获取内容,并允许您轻松解析其中的某些部分。它只获取您提供的 URL 的内容,然后停止。除非您手动将其放入具有某些标准的无限循环中,否则它不会爬行。

简单来说,使用 Beautiful Soup,您可以构建类似于 Scrapy 的东西。Beautiful Soup 是一个库,而 Scrapy 是一个完整的框架。

二、BeautifulSoup 和 Scrapy特点

Scrapy 是一个网络抓取框架,可以帮助我们快速抓取信息。以下是Scrapy最突出的优点。 

  • Feed 导出:允许以各种格式保存数据,例如 CSV、JSON、jsonlines 和 XML。
  • 异步抓取:Scrapy 使用扭曲的框架,它使我们能够一次访问多个 url,其中每个请求都以非阻塞方式处理(基本上我们不必等待请求完成后再发送另一个请求)。
  • 选择器:选择器允许我们从网页中选择特定数据,例如标题、带有类名的某些 div 等)。Scrapy 使用 lxml 进行解析,速度很快。
  • 设置用户代理、标头等:允许用户进行动态设置和代理其他标头。
  • Cookies:scrapy 会自动为我们处理 cookie。
  • TLDR:scrapy 是一个框架,它提供了构建大规模爬网所需的一切与隐藏爬网复杂性的各种功能。用户 可以简单地开始编写网络爬虫,而不必担心设置负担。

Beautiful Soup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据。我们可以使用它从 java 脚本中获取数据或动态加载页面。

  • 如果想要解析已下载的网页,首推使用 Beautiful soup。
  • BS4 非常流行和古老,您将需要其他库(如 requests、urllib 等)来使用 bs4 制作爬虫。
  • 需要管理正在被抓取的 url 列表、被抓取、处理 cookie、管理代理、处理错误、创建自己的函数以将数据推送到 CSV、JSON、XML 等。
  • 如果想加快速度比,可以使用其他库,例如multiprocessing。

三、BeautifulSoup 和 Scrapy对比

  • Scrapy 是一个丰富的框架,您可以使用它开始编写爬虫而无需任何麻烦。Beautiful soup 是一个可以用来解析网页的库。它不能单独用于刮网。
  • 对于大部门人而言,BeautifulSoup会比 Scrapy更容易掌握。
  • Scrapy 的扩展、支持和社区比 BeautifulSoup 更大。如果需要从大量数据中抓取网站beautifulsoup 无法支持。在这种情况下,推荐使用 Scrapy,它是一个完整的抓取框架。此外,scrapy 还支持数据库(所有类型的数据库),因此它比其他网络抓取库具有巨大的优势。
  • Scrapy 应该被认为是一个Spider而 BeautifulSoup 是一个Parser。

四、抓取数据最佳组合

Scrapy with BeautifulSoup 是我们可以用来抓取静态和动态内容的最佳组合之一。因此我们可以将二者配合使用。例如,首先可以使用 scrapy 所有页面,并使用他们的pipeline将其保存在 mongodb 集合中,之后,使用 BeautifulSoup 进行数据解析。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK