我想做一个网站,显示亚马逊和 e-bay 产品价格之间的比较。其中哪一个会更好,为什么?我对BeautifulSoup有点熟悉,但对Scrapy crawler不太熟悉。
9 回答
Scrapy是一个 Web-spider 或网络爬虫框架,您给 Scrapy 一个根 URL 以开始爬取,然后您可以指定要爬取和获取的 URL 数量(数量)的限制等。它是一个完整的网络抓取或抓取框架。
尽管
BeautifulSoup是一个解析库,它还可以很好地从 URL 中获取内容,并允许您轻松解析其中的某些部分。它只获取您提供的 URL 的内容,然后停止。除非您手动将其放入具有某些标准的无限循环中,否则它不会爬行。
简单来说,使用 Beautiful Soup,您可以构建类似于 Scrapy 的东西。Beautiful Soup 是一个库,而 Scrapy 是一个完整的框架。
我认为两者都很好......我现在正在做一个使用两者的项目。首先,我使用 scrapy 废弃所有页面,并使用他们的管道将其保存在 mongodb 集合中,同时下载页面上存在的图像。之后,我使用 BeautifulSoup4 进行后处理,我必须更改属性值并获取一些特殊标签。
如果你不知道你想要哪些页面产品,一个好的工具将是scrapy,因为你可以使用他们的爬虫来运行所有亚马逊/ebay 网站来寻找产品,而不需要明确的 for 循环。
看一下scrapy文档,使用起来非常简单。
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)并更新数据库上的价格。这样您的网站将始终从数据库中提取,并且爬虫和数据库将充当单独的组件。
两者都用于解析数据。
刮擦:
- Scrapy 是一个快速的高级网页抓取和网页抓取框架,用于抓取网站并从其页面中提取结构化数据。
- 但是当数据来自java脚本或动态加载时,它有一些限制,我们可以通过使用splash,selenium等包来克服它。
美丽汤:
Beautiful Soup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据。
我们可以使用这个包从 java 脚本中获取数据或动态加载页面。
Scrapy with BeautifulSoup 是我们可以用来抓取静态和动态内容的最佳组合之一
我这样做的方法是使用 eBay/Amazon API 而不是 scrapy,然后使用 BeautifulSoup 解析结果。
API 为您提供了一种官方方式来获取您从 scrapy 爬虫获得的相同数据,而无需担心隐藏您的身份、弄乱代理等。
BeautifulSoup是一个库,可让您从网页中提取信息。
另一方面, Scrapy是一个框架,它可以完成上述事情以及您在抓取项目中可能需要的更多事情,例如用于保存数据的管道。
您可以查看此博客以开始使用 Scrapy https://www.inkoop.io/blog/web-scraping-using-python-and-scrapy/
使用scrapy可以节省大量代码并从结构化编程开始,如果您不喜欢 scapy 的任何预先编写的方法,那么可以使用BeautifulSoup代替 scrapy 方法。大项目兼收并蓄。
Beautifulsoup 是网页抓取的小型库。它可以完成您的工作,但有时它不能满足您的需求。我的意思是,如果您从大量数据中抓取网站,那么在这种情况下,beautifulsoup 会失败。
在这种情况下,您应该使用 Scrapy,它是一个完整的抓取框架,可以完成您的工作。此外,scrapy 还支持数据库(所有类型的数据库),因此它比其他网络抓取库具有巨大的优势。
差异很多,任何工具/技术的选择都取决于个人需求。
几个主要区别是:
- BeautifulSoup比 Scrapy更容易学习。
- Scrapy 的扩展、支持和社区比 BeautifulSoup 更大。
- Scrapy 应该被视为Spider而 BeautifulSoup 是Parser。