返回博客
使用案例
罗伯特·斯菲奇2021年8月12日阅读时间:7分钟

如何使用 WebScrapingAPI 收集 Yelp 数据

如何使用 WebScrapingAPI 收集 Yelp 数据

为什么应该抓取竞争对手的数据

调查竞争对手的产品定价、关注其产品线和品类,或分析其社交媒体策略,这些都是您用来提升业务的最有效的策略中的三种。

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

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

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

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

Yelp 是最受欢迎的在线平台之一,用户可以在这里分享自己的体验,同时帮助他人针对本地商家做出明智的决策。如果您是商家或正计划创业,了解有关竞争对手的宝贵信息将能大幅提高您的成功率。通过浏览 Yelp,您可以获取关于具体位置、营业时间、配送服务或经营类型等信息,这些只是其中的一部分。

更棒的是,借助网络爬虫工具,您可以减少用于分析竞争对手的时间,从而将更多精力投入到打造更优质的业务上。从长远来看,这一策略将带来丰厚回报,因为自动化数据收集过程往往是最繁琐且耗时的工作之一。

如何使用 WebScrapingAPI 从 Yelp 提取数据

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

1. 查找所需数据

假设我们打算在纽约市开一家餐厅。我们需要制作一份竞争对手清单,其中应包含以下有用的信息:

  • 评论数量
  • 餐厅类型
  • 定价
  • 地点
Yelp搜索结果页面显示了餐厅列表以及纽约市的交互式地图

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

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

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

WebScrapingAPI API 演示平台,展示请求选项以及带“复制”按钮的生成的 curl 代码示例

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

WebScrapingAPI API 演示平台,展示 Yelp 搜索请求的 HTML 结果

现在,让我们编写一个脚本,它将替我们完成大部分工作。

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 源代码:

Yelp 搜索结果页面,Chrome 开发者工具高亮显示了某家餐厅列表链接的 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,无需花费一分钱。

关于作者
罗伯特·斯菲奇,WebScrapingAPI 全栈开发工程师
罗伯特-斯菲奇全栈开发工程师

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

开始构建

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

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