返回博客
指南
Robert MunceanuLast updated on Apr 28, 20261 min read

如何使用 WebScrapingAPI 抓取任何网站

如何使用 WebScrapingAPI 抓取任何网站

如果您对网页抓取工具感兴趣,并且正在寻找一种能够从互联网上提取各种数据的解决方案,那么您来对地方了!

在本文中,我们将向您展示如何轻松利用 WebScrapingAPI,在短短几分钟内获取所需信息,并按您喜欢的方式处理数据。

虽然您可以自行开发网络爬虫来提取数据,但这将耗费大量时间和精力,因为开发过程中需要克服诸多挑战。而时间就是金钱。

言归正传,让我们来看看如何使用 WebScrapingAPI 从任何网站提取数据。不过,我们先来探讨一下网络爬虫为何如此有价值,以及它们如何帮助您或您的企业实现增长目标。

网络爬虫如何助您一臂之力

网络爬虫可用于多种用途。企业利用数据提取工具来拓展业务;研究人员则可利用这些数据制作统计报告或辅助论文撰写。让我们来看看具体如何实现:

  • 定价优化:更全面地了解竞争对手有助于业务增长。这样您就能掌握行业价格的波动趋势及其对业务的影响。即使您只是在寻找要购买的商品,这也能够帮助您比较不同供应商的价格,从而找到最划算的交易。
  • 研究:这是为研究项目收集信息的高效途径。统计数据和数据报告对确保报告的真实性至关重要。使用网络爬虫工具可显著加快这一过程。
  • 机器学习:为了训练人工智能,您需要大量数据作为训练素材,而手动提取数据可能耗时甚久。例如,若想让人工智能识别照片中的狗,您就需要大量幼犬的照片。

应用场景不胜枚举,但您必须记住:网络爬虫就像一把瑞士军刀,用途广泛,是极其重要的工具!如果您好奇网络爬虫何时能成为解决问题的答案,不妨一探究竟?

接下来,您将了解 WebScrapingAPI 的部分功能,以及它如何助您像无人察觉般从网络中抓取并提取数据!

WebScrapingAPI 能为您带来什么

你可能曾考虑过开发自己的网络爬虫工具而不是使用现成的工具,但你需要考虑许多因素,而且这可能需要大量的时间和精力。

并非所有网站都欢迎被抓取,因此它们会开发反制措施来检测并阻止机器人执行您的指令。这些措施可能包括验证码、速率限制和浏览器指纹识别等。如果您的 IP 地址被判定为可疑,那么您的抓取行动恐怕很快就会受阻。

有些网站只允许特定地区的用户进行抓取,因此你必须使用代理才能访问其内容。但管理代理池也绝非易事,你需要不断轮换代理以避免被检测,并针对受地理限制的内容使用特定的IP地址。

尽管存在这些难题,WebScrapingAPI 能为您卸下重担,轻松解决这些问题,让网页抓取变得轻而易举。您可以亲自体验一下,看看在网页抓取过程中可能会遇到哪些障碍

既然我们已经了解了 WebScrapingAPI 能为我们提供哪些帮助,接下来就来看看如何使用它吧,请放心,操作起来同样非常简单!

如何使用 WebScrapingAPI

API 访问密钥与身份验证

首先,我们需要一个访问密钥才能使用 WebScrapingAPI。要获取它,您需要创建一个账户。流程非常简单,而且完全免费,因为我们还提供免费订阅计划!

登录后,您将被重定向至仪表盘,在那里可以看到您的专属访问密钥。请务必妥善保管,若怀疑密钥已泄露,可随时点击“重置 API 密钥”按钮获取新密钥。

获取密钥后,我们可以进入下一步,了解如何使用它。

文档

了解 WebScrapingAPI 具备哪些功能来协助我们的网页抓取工作至关重要。所有这些信息都可以在文档中找到,文档以详尽的方式呈现,并附有不同编程语言的代码示例。  这些内容旨在帮助您更好地理解各项功能的运作原理及其在项目中的集成方式。向 API 发送的最基本请求是将 api_keyurl 参数分别设置为您自己的访问密钥和要抓取的网站 URL。以下是一个 Python 语言的简短示例:

import http.client
conn = http.client.HTTPSConnection("api.webscrapingapi.com")
conn.request("GET", "/v1?api_key=XXXXX&url=http%3A%2F%2Fhttpbin.org%2Fip")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

WebScrapingAPI 还具备其他可用于爬取的功能。其中一些只需设置几个额外参数即可使用,而另一些功能已预先集成在 API 中,我们之前已对此进行过讨论。

下面让我们看看还可以设置哪些参数,以及它们为何对数据提取有帮助:

  • render_js:某些网站可能使用 JavaScript 渲染关键页面元素,这意味着部分内容在页面初始加载时不会显示,因此无法被抓取。通过使用无头浏览器,WSA 能够渲染这些内容并为您抓取,供您使用。只需将 render_js 设置为 1,即可轻松搞定!
  • proxy_type:您可以选择要使用的代理类型。以下是代理为何如此重要,以及代理类型如何影响您的网页抓取。
  • country:当您需要从不同地理位置进行抓取时,地理定位功能非常实用,因为网站内容可能因地区而异,甚至存在独家内容。在此处,请设置 WSA 支持的 2 位国家代码。

API 演示平台

如果您希望在将 WebScrapingAPI 集成到项目中之前先了解其工作原理,可以使用该测试平台来验证部分结果。它拥有友好的界面且易于使用。只需根据您想要进行的抓取类型选择参数并发送请求即可。

在结果区域,您将看到抓取完成后的输出结果,以及该请求在不同编程语言中的代码示例,以便更轻松地进行集成。

API 集成

如何在项目中使用 WSA?让我们通过这个简短示例来了解:我们将抓取亚马逊页面以查找最昂贵的显卡。此示例使用 JavaScript 编写,但您也可以使用任何您熟悉的编程语言实现。

首先,我们需要在项目终端中运行以下命令行,安装一些用于处理 HTTP 请求(got)和解析结果(jsdom)的包:

npm install got jsdom

下一步是设置请求所需的参数:

const params = {
   api_key: "XXXXXX",
   url: "https://www.amazon.com/s?k=graphic+card"
}

这是我们向 WebScrapingAPI 发送请求以抓取网站数据的方式:

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

现在我们需要确定每个显卡元素在 HTML 中的位置。通过开发者工具,我们发现 class 为 s-result-item 的元素包含所有产品详情,但我们只需要其中的价格。

在该元素内部,我们可以看到有一个类名为 a-price 且带有子类 a-offscreen 的价格容器,我们将从中提取代表价格的文本。

WebScrapingAPI 会以 HTML 格式返回页面,因此我们需要对其进行解析。JSDOM 可以胜任此任务。

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

向 WSA 发送请求并解析其返回的响应后,我们需要过滤结果,仅提取对我们重要的内容。根据前一步的发现,我们知道每个产品的详细信息都位于 s-result-item 类中,因此我们遍历这些元素。在每个元素内部,我们检查价格容器类 a-price 是否存在;如果存在,则从其内部的 a-offscreen 元素中提取价格,并将其推入数组。

现在找出最贵的产品应该轻而易举。只需遍历数组并相互比较价格即可。

将其封装为一个异步函数后,最终代码应如下所示:

const {JSDOM} = require("jsdom");
const got = require("got");
(async () => {
   const params = {
       api_key: "XXX",
       url: "https://www.amazon.com/s?k=graphic+card"
   }
   const response = await got('https://api.webscrapingapi.com/v1', {searchParams: params})
   const {document} = new JSDOM(response.body).window
   const products = document.querySelectorAll('.s-result-item')
   const prices = []
   products.forEach(el => {
       if (el) {
           const priceContainer = el.querySelector('.a-price')
           if (priceContainer)               prices.push(priceContainer.querySelector('.a-offscreen').innerHTML)
       }
   })
   let most_expensive = 0
   prices.forEach((price) => {
       if(most_expensive < parseFloat(price.substring(1))) 
most_expensive = parseFloat(price.substring(1))
   })
     console.log("The most expensive item is: ", most_expensive)
})();

结语

希望本文能向您展示现成的网络爬虫工具有多么实用,以及在您的项目中使用它有多么简单。它能解决网站设置的各种障碍,帮助您以隐蔽的方式在互联网上进行爬取,还能为您节省大量时间。

何不试用一下 WebScrapingAPI?如果您尚未尝试,不妨亲自体验其强大功能。注册完全免费,1000 次 API 调用将助您开启网络爬虫之旅。

立即开始吧!

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

罗伯特·蒙塞阿努(Robert Munceanu)是 WebScrapingAPI 的全栈开发工程师,他在产品各领域均有贡献,并协助构建了支持该平台的可靠工具和功能。

开始构建

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

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