【问题标题】:Difference between BeautifulSoup and Scrapy crawler?BeautifulSoup 和 Scrapy 爬虫的区别?
【发布时间】:2013-11-10 07:57:35
【问题描述】:

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

【问题讨论】:

  • 当这两个网站都有很棒的 AP​​I 时,为什么还要使用爬虫呢? aws.amazon.com/pythondeveloper.ebay.com/common/api
  • 我来自印度,我认为 Amazon-Api 不支持印度主机。印度没有 api(locale)HOSTS = {'ca':'ecs.amazonaws.ca','cn':'webservices.amazon.cn','de':'ecs.amazonaws.de','es':' webservices.amazon.es','fr':'ecs.amazonaws.fr','it':'webservices.amazon.it','jp':'ecs.amazonaws.jp','uk':'ecs. amazonaws.co.uk', '我们': 'ecs.amazonaws.com',}
  • 如果我想抓取其他没有 API 的网站怎么办?
  • @InbarRose 使用亚马逊的产品 API 需要 Amazon Associate 帐户。
  • bs4 vs Scrapy

标签: python beautifulsoup scrapy web-crawler


【解决方案1】:

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

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

看一下scrapy文档,用起来很简单。

【讨论】:

  • 所以我可以在 Web 服务器上使用 Scrapy,因为它有很多依赖项,例如(Twisted、pywin32、pyOpenSSL 等)。 (对不起这个愚蠢的问题,我是 python 新手)
  • 在网络服务器上?我从来没有尝试过......我在shell上使用它,执行“scrapy crawl ”来运行蜘蛛......也许你可以在服务器上使用它,但你必须使用python调用它子进程模块 (docs.python.org/2/library/subprocess.html)。正如我所说,永远不要尝试这个,但也许它可以工作......只是一个注释,使用来自scrapy的日志消息只是为了让你知道你的爬虫上可能发生的错误(来自scrapy导入日志)。
【解决方案2】:

Scrapy 是一个 Web-spider 或 web scraper framework,你给 Scrapy 一个根 URL 来开始爬取,然后你可以指定多少个(数量)的约束您要抓取和获取的 URL 等。它是一个完整的网络抓取或抓取框架。

虽然

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

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

Source

【讨论】:

  • 哪个更快,我的意思是我正在使用 BeautifulSoup,它需要大约 10 秒来删除数据? scrapy 比 beautifulsoup 快吗?
  • 如果你使用beautifulsoup和阻塞代码,只要有独立的请求,scrapy应该会更快,但我想你也可以使用beautifulsoup和asyncio来获得更好的性能。
  • 我会说,Scrapy 和 BeautifulSoup 将非常快,您将能够充分利用两者。
  • Scrapy 支持开箱即用的异步请求,而使用 beautifulsoup 您必须使用异步客户端之一,例如 aiohttp 客户端。
【解决方案3】:

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

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

【讨论】:

  • 该问题明确要求提供 API 不可用的解决方案。
  • 另外,只是好奇。如果您实际使用 API(返回 JSON),为什么需要 Beautiful Soup 进行解析?
【解决方案4】:

两者都用于解析数据。

Scrapy

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

美汤

  • Beautiful Soup 是一个 Python 库,用于从 HTML 和 XML 文件。

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

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

【讨论】:

    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

      几个主要区别是:

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

      【讨论】:

        【解决方案7】:

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

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

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

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

        等等

        TLDR:scrapy 是一个框架,它提供了所有可能的东西 需要建立大规模的爬网。它提供了各种功能, 隐藏爬网的复杂性。一个人可以简单地开始写网页 爬虫,无需担心设置负担。

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

        总结一下。

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

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

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

        【讨论】:

          【解决方案8】:

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

          另一方面,

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

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

          【讨论】:

            【解决方案9】:

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

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

            【讨论】:

              猜你喜欢
              • 2019-06-24
              • 1970-01-01
              • 2021-12-26
              • 1970-01-01
              • 1970-01-01
              • 2019-12-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多