148

我想做一个网站,显示亚马逊和 e-bay 产品价格之间的比较。其中哪一个会更好,为什么?我对BeautifulSoup有点熟悉,但对Scrapy crawler不太熟悉。

4

9 回答 9

258

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

尽管

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

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

资源

于 2013-11-01T19:41:41.127 回答
20

我认为两者都很好......我现在正在做一个使用两者的项目。首先,我使用 scrapy 废弃所有页面,并使用他们的管道将其保存在 mongodb 集合中,同时下载页面上存在的图像。之后,我使用 BeautifulSoup4 进行后处理,我必须更改属性值并获取一些特殊标签。

如果你不知道你想要哪些页面产品,一个好的工具将是scrapy,因为你可以使用他们的爬虫来运行所有亚马逊/ebay 网站来寻找产品,而不需要明确的 for 循环。

看一下scrapy文档,使用起来非常简单。

于 2013-10-30T15:49:30.120 回答
8

Scrapy 它是一个网络抓取框架,它带有大量的好东西,使抓取更容易,因此我们可以只专注于抓取逻辑。以下是我最喜欢的一些scrapy 照顾我们的东西。

  • Feed 导出:它基本上允许我们以各种格式保存数据,例如 CSV、JSON、jsonlines 和 XML。
  • 异步抓取:Scrapy 使用扭曲的框架,它使我们能够一次访问多个 url,其中每个请求都以非阻塞方式处理(基本上我们不必等待请求完成后再发送另一个请求)。
  • 选择器:在这里我们可以将scrapy 与漂亮的汤进行比较。选择器允许我们从网页中选择特定数据,例如标题、带有类名的某些 div 等)。Scrapy 使用 lxml 进行解析,这比漂亮的汤快得多。
  • 设置代理、用户代理、标头等:scrapy 允许我们动态设置和旋转代理和其他标头。

  • 项目管道:管道使我们能够在提取后处理数据。例如,我们可以配置管道将数据推送到您的 mysql 服务器。

  • Cookies:scrapy 会自动为我们处理 cookie。

等等

TLDR:scrapy 是一个框架,它提供了构建大规模爬网所需的一切。它提供了隐藏爬网复杂性的各种功能。可以简单地开始编写网络爬虫,而不必担心设置负担。

Beautiful Soup Beautiful Soup 是一个用于解析 HTML 和 XML 文档 的 Python 包。因此,使用 Beautiful soup 您可以解析已经下载的网页。BS4 非常流行和古老。不像scrapy,你不能只用漂亮的汤来做爬虫。您将需要其他库(如 requests、urllib 等)来使用 bs4 制作爬虫。同样,这意味着您需要管理正在被抓取的 url 列表、被抓取、处理 cookie、管理代理、处理错误、创建自己的函数以将数据推送到 CSV、JSON、XML 等。如果您想加快速度比您必须使用其他库,例如multiprocessing

总结一下。

  • Scrapy 是一个丰富的框架,您可以使用它开始编写爬虫而无需任何麻烦。

  • Beautiful soup 是一个可以用来解析网页的库。它不能单独用于刮网。

您绝对应该为您的亚马逊和 e-bay 产品价格比较网站使用 scrapy。您可以建立一个 url 数据库并每天运行爬虫(cron 作业、用于计划爬虫的 Celery)并更新数据库上的价格。这样您的网站将始终从数据库中提取,并且爬虫和数据库将充当单独的组件。

于 2019-08-13T09:28:13.390 回答
3

两者都用于解析数据。

刮擦

  • Scrapy 是一个快速的高级网页抓取和网页抓取框架,用于抓取网站并从其页面中提取结构化数据。
  • 但是当数据来自java脚本或动态加载时,它有一些限制,我们可以通过使用splash,selenium等包来克服它。

美丽汤

  • Beautiful Soup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据。

  • 我们可以使用这个包从 java 脚本中获取数据或动态加载页面。

Scrapy with BeautifulSoup 是我们可以用来抓取静态和动态内容的最佳组合之一

于 2017-10-06T08:54:09.417 回答
2

我这样做的方法是使用 eBay/Amazon API 而不是 scrapy,然后使用 BeautifulSoup 解析结果。

API 为您提供了一种官方方式来获取您从 scrapy 爬虫获得的相同数据,而无需担心隐藏您的身份、弄乱代理等。

于 2014-06-04T14:45:50.500 回答
1

BeautifulSoup是一个库,可让您从网页中提取信息。

另一方面, Scrapy是一个框架,它可以完成上述事情以及您在抓取项目中可能需要的更多事情,例如用于保存数据的管道。

您可以查看此博客以开始使用 Scrapy https://www.inkoop.io/blog/web-scraping-using-python-and-scrapy/

于 2019-09-25T21:01:12.187 回答
1

使用scrapy可以节省大量代码并从结构化编程开始,如果您不喜欢 scapy 的任何预先编写的方法,那么可以使用BeautifulSoup代替 scrapy 方法。大项目兼收并蓄。

于 2018-03-09T06:20:26.043 回答
1

Beautifulsoup 是网页抓取的小型库。它可以完成您的工作,但有时它不能满足您的需求。我的意思是,如果您从大量数据中抓取网站,那么在这种情况下,beautifulsoup 会失败。

在这种情况下,您应该使用 Scrapy,它是一个完整的抓取框架,可以完成您的工作。此外,scrapy 还支持数据库(所有类型的数据库),因此它比其他网络抓取库具有巨大的优势。

于 2021-03-04T17:21:16.947 回答
0

差异很多,任何工具/技术的选择都取决于个人需求。

几个主要区别是:

  1. BeautifulSoup比 Scrapy更容易学习。
  2. Scrapy 的扩展、支持和社区比 BeautifulSoup 更大。
  3. Scrapy 应该被视为Spider而 BeautifulSoup 是Parser
于 2019-02-23T06:26:31.063 回答