返回博客
用例
Robert SfichiLast updated on Mar 31, 20261 min read

如何使用 WebScrapingAPI 收集 Yelp 数据

如何使用 WebScrapingAPI 收集 Yelp 数据

你是否曾好奇企业是如何监控竞争对手的?当然,双面间谍、私家侦探和望远镜听起来或许很有趣,但现实生活可不像电影里那样。实际的竞争对手分析是一个繁琐的过程,最好交给软件来处理。这样,你就可以专注于为客户创造最大价值。

如今,您所需的竞争对手信息早已公开可见。随着社交媒体在过去几十年间日益普及,企业正通过建立线上形象,努力在客户生活中占据更多空间。这些信息早已触手可及,我们只需找到一种方法来自动化数据收集流程。

在接下来的文章中,我们将编写一个脚本,利用竞争对手公开的Yelp个人资料,帮助我们收集关于业务竞争对手的所有必要信息。

为何要抓取竞争对手数据

调查竞争对手的产品定价、监控其产品线和品类,或分析其社交媒体策略,这三者正是您提升业务水平最有效的策略。

查找并比较产品价格并非难事,但十分耗时。使用网络爬虫工具可帮助您自动获取有关竞争对手定价策略和限时促销的最新信息。

抓取竞争对手的产品线和品类信息,有助于您更好地把握定义市场的趋势。例如,如果您经营一家餐厅,可以发现素食汉堡等特定菜品在您所在城市正流行,从而调整菜单以提升销售额。

社交媒体不仅有助于加强企业与客户之间的联系。通过分析竞争对手的社交媒体策略,您只需几分钟就能发现哪些方法有效、哪些无效。只需进行数据抓取,您就能轻松找到诸如“他们每周发布多少次?”或“哪些视觉内容能保持高互动率?”等问题的答案。

为何 Yelp 是抓取竞争对手数据的理想平台

Yelp是用户分享体验、帮助他人做出明智本地商家决策的最受欢迎在线平台之一。无论您是企业主还是创业者,掌握有价值的竞争对手信息都能大幅提高您的成功率。通过浏览Yelp,您可以获取确切位置、营业时间、配送服务或业务类型等各类信息。

更妙的是,通过使用网页抓取工具,您可以减少分析竞争对手所需的时间,从而将更多精力投入到打造更优质的业务中。从长远来看,这一策略将带来丰厚回报,因为自动化数据收集过程往往是最繁琐且耗时的任务之一。

如何使用 WebScrapingAPI 从 Yelp 提取数据

在接下来的章节中,我们将使用 Node.js 以及 got 和 jsdom 等几个库,编写一个脚本,从 Yelp 页面获取所有数据,并将其格式化得清晰易懂。让我们看看如何将上述所有信息转化为切实可行的结果:

1. 确定所需数据

假设我们计划在纽约市开一家餐厅。我们需要建立一份竞争对手列表,其中应包含以下有用的信息:

  • 评论数量
  • 餐厅类型
  • 价格
  • 位置

我们将要抓取的URL如下:https://www.yelp.ie/search?find_desc=restaurant&find_loc=New+York%2C+NY%2C+United+States&ns=1。

如果您开始使用包含 5000 次请求且可访问所有功能的免费试用版来测试我们的产品,就可以在阅读本文的同时进行数据抓取。您可以使用自己最熟悉的任何抓取工具。但请注意,从这里开始,本教程将重点介绍如何使用 WebScrapingAPI 获取结果。

成功创建免费账户后,点击仪表盘页面上的“使用 API 沙盒”按钮,进入 API 沙盒页面。页面应如下所示:

顾名思义,这是我们在编写脚本前测试爬取工具的地方。请将上文提供的 URL 复制到 URL 输入框(左侧栏)中,向下滚动一点,然后点击“发送 API 请求”按钮。此操作应返回如下结果:

现在,让我们编写那个将承担大部分工作的脚本。

2. 设置项目

创建项目文件夹,打开终端窗口并切换至该目录。正如之前所述,我们将使用 ‘got’ 库来发送请求,并使用 ‘jsdom’ 进行解析。进入项目文件夹后,在终端中运行以下命令:

npm init -y
npm install got jsdom

此时项目应已包含 'package.json' 文件。创建一个名为 'index.js' 的新文件,并使用您喜欢的 IDE 打开它。如果您尚未安装任何 IDE,建议下载 Visual Studio Code,因为它目前被认为是最流行的 IDE。

3. 发起请求

接下来,我们将设置参数、发起请求并解析 HTML。在新创建的 'index.js' 文件中编写以下代码:

const {JSDOM} = require("jsdom")

const got = require("got")

(async () => {
const params = {
    api_key: "YOUR_API_KEY,”
    url:"https://www.yelp.ie/search?find_desc=restaurant&find_loc=New+York%2C+NY%2C+United+States&ns=1"
}

const response = await got('https://api.webscrapingapi.com/v1', {searchParams: params})


const {document} = new JSDOM(response.body).window

const competitors = document.querySelectorAll('.container__09f24__sxa9-')

console.log(competitors)

})()

请务必将“YOUR_API_KEY”字符串替换为我们的服务提供的 API 密钥。您可以在仪表盘页面上找到它。

运行脚本后,我们将向 WebScrapingAPI 服务发起请求以获取 Yelp 页面的 HTML。随后,我们收集页面上所有包含竞争对手信息的元素,并通过 ‘console.log’ 函数将其输出到屏幕上。

4. 检查页面

让我们回到 Yelp 页面,了解如何仅筛选出我们需要的信息。右键单击第一家餐厅的名称,然后点击“检查”。

此时将弹出一个包含 HTML 源代码的新窗口:

让我们通过查找包含所需信息的 HTML 元素来获取所有数据。在上图中,我们可以轻松看到包含餐厅名称的元素具有“css-166la90”的 CSS 类。要获取所有竞争对手的名称,我们需要选择页面上具有该类的所有元素。 对于之前展示的所有细节,如评论数量、餐厅类型、价格和位置,我们也将采用同样的方法。

5. 信息格式化

现在,我们将从生成的 API 响应中获取所需的所有信息。我们将提取并格式化餐厅名称、评分、餐厅类型、价格范围和位置。将以下代码行添加到“index.js”文件中。

competitors.forEach((competitor) => {
    if (competitor) {
        const name = competitor.querySelector('.css-166la90')
        if (name) competitor.name = name.innerHTML

        const reviewScore = competitor.querySelector('.reviewCount__09f24__EUXPN')
        if (reviewScore) competitor.review_score = `${reviewScore.innerHTML}/100`

        const types = competitor.querySelectorAll('.css-1hx6l2b')
        if (types) {
            competitor.types = []
            for (type of types) competitor.types.push(type.innerText)
       }

       const priceRange = competitor.querySelector('.priceRange__09f24__2O6le')
       if (priceRange) competitor.price_range = priceRange.innerHTML

       const locationContainer = competitor.querySelector('.priceCategory__09f24__Ylk7h')
       if (locationContainer) {
	     let location = locationContainer.querySelector('.css-e81eai')
	     competitor.location = location
       }

       results.push(competitor)
    }
})

console.log(results)

最终,我们将得到一个对象数组,其中每个对象都包含页面上的每家餐厅及其具体数据。

如您所见,使用 WebScrapingAPI 抓取 Yelp 数据非常简单。我们需要使用抓取 API 获取 HTML 内容,解析响应,从页面上的每个元素中提取相关信息,并将所有内容添加到列表中。

无需额外工作即可了解竞争对手

如今,想要创办一家新企业,光有优秀的产品远远不够。机会无穷无尽,全取决于你的创造力。企业主应重点关注以下最具价值的策略:

  • 打造出色的线上形象
  • 致力于以最低价格提供最大价值
  • 全面了解竞争对手的优势

所有这些策略对业务发展都至关重要。令人欣慰的是,网络爬虫在解决这些问题时能提供巨大帮助。将自动化引入数据采集流程,可能是提升业务的最简单一步。

我们致力于开发相关工具,以此为各位提供助力。感谢您阅读至此。请记住,WebScraping API 提供免费试用服务,试用期结束后用户将自动降级至免费套餐,因此您无需花费一分钱,即可尽情测试该 API。

关于作者
Robert Sfichi, 全栈开发工程师 @ WebScrapingAPI
Robert Sfichi全栈开发工程师

罗伯特·斯菲奇是 WebScrapingAPI 的团队成员,致力于产品开发,并协助构建可靠的解决方案,以支持该平台及其用户。

开始构建

准备好扩展您的数据收集规模了吗?

加入2,000多家企业,使用WebScrapingAPI在无需任何基础设施开销的情况下,以企业级规模提取网络数据。