BeautifulSoup和Scrapy爬虫之间的区别?

时间:2013-10-30 15:43:24

标签: python beautifulsoup scrapy web-crawler

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

10 个答案:

答案 0 :(得分:204)

Scrapy 是一个Web蜘蛛或 Web scraper框架,您给Scrapy一个根URL开始抓取,然后您可以指定约束数量(数量)您要抓取和获取的网址等。它是一个完整的网络抓取框架或抓取

虽然

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

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

来源:http://www.quora.com/Python-programming-language-1/How-is-BeautifulSoup-different-from-Scrapy

答案 1 :(得分:18)

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

如果你不知道你想要哪些产品,那么一个好的工具就是scrapy,因为你可以使用他们的抓取工具来运行所有amazon / ebay网站,寻找产品而不需要明确的循环。

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

答案 2 :(得分:3)

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

API为您提供了一种获取scrapy crawler所获得的相同数据的官方方式,无需担心隐藏您的身份,搞乱代理等等。

答案 3 :(得分:3)

两者都用于解析数据。

<强> Scrapy

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

<强> BeautifulSoup

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

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

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

答案 4 :(得分:1)

Scrapy 这是一个网络抓取框架,其中包含大量的功能,使抓取变得更加容易,因此我们只能专注于爬网逻辑。下面是我最喜欢的一些scrapy照顾我们的事情。

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

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

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

  

TLDR:scrapy是一个框架,可提供可能的所有内容   需要构建大规模爬网。它提供了各种功能,   隐藏了爬网的复杂性。一个人可以开始写网页   爬虫而无需担心安装负担。

Beautiful soup Beautiful Soup是用于解析HTML和XML文档的Python软件包。因此,使用Beautiful汤,您可以解析一个已经下载的网页。 BS4非常受欢迎且古老。与强壮的人不同,您不能只用美丽的汤做爬虫。您将需要其他库(例如request,urllib等)来使bs4成为爬虫。同样,这意味着您需要管理要爬网的URL列表,要爬网的URL,处理Cookie,管理代理,处理错误,创建自己的函数以将数据推送到CSV,JSON,XML等。如果要加快速度您将不必使用multiprocessing之类的其他库。

总结。

  • Scrapy是一个丰富的框架,可用于开始编写搜寻器 没有任何麻烦。

  • 美丽的汤是一个可用于解析网页的库。它 不能单独用来刮网。

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

答案 5 :(得分:1)

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

另一方面,

Scrapy 是一个框架,它可以执行上述操作以及您在抓取项目中可能需要的其他事情,例如用于保存数据的管道。

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

几个主要区别是:

  1. BeautifulSoup相对于Scrapy而言易于学习
  2. Scrapy的扩展,支持和社区要比BeautifulSoup大。
  3. Scrapy应该被视为 Spider ,而BeautifulSoup是 Parser

答案 8 :(得分:0)

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

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

答案 9 :(得分:-1)

BeautifulSoup 仅用于解析HTML和提取数据,

Scrapy 用于下载HTML,处理数据并保存。

有关详细比较,请参见this