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 进行数据解析。