如何使用Axios和Cheerio进行网页抓取
网络抓取是从网站提取内容和数据的过程。这称为刮擦。抓取网站的原因有无数。今天我们将学习如何在 Axios 的帮助下实现这一点,Axios 是一款适用于 Node.js 和浏览器的出色 HTTP 客户端。
Axios 是做什么的?
Axios 允许您以类似于浏览器的方式向网站和服务器发出请求。但 Axios 允许您使用代码来操纵响应,而不是直观地呈现结果。这在网络抓取的上下文中非常有用。
在本教程中,我们将抓取ScrapeMe(一种旨在抓取的电子商务)的内容,以了解该过程。具体来说,我们将提取一些产品的名称及其价格。通过使用您将在本文中学到的技术,您可以将 Axios 网页抓取的强大功能应用到许多网站。
开始之前
- 您知道如何使用任何编程语言进行开发。最好是用 JavaScript 编写。
- 您知道如何使用CSS 选择器来访问DOM元素。
- 您需要在计算机上安装 Node 和 npm。如果您需要这方面的帮助,可以参考下载并安装 Node.js 和 npm。
Axios 网页抓取的目的是什么?
有时,您可以以结构化方式(例如 JSON 格式)从 Web API 获取所需的数据。在许多情况下,访问某些数据的唯一方法是从公共网站获取数据。这可能是一项成本高昂且耗时的任务,但 Axios 网络抓取允许您自动执行此过程,以便您可以有效地从网站获取数据和内容。
如果您是一位长期使用 Axios 的前端开发人员,您可能想知道是否可以使用 Axios 来抓取网站。这实际上是一个好主意,因为它在浏览器和 Node.js 上运行,对 Typescript 有很好的支持,有可靠的文档,并且网络上有很多示例。
初始设置
为您的 Axios 网页抓取项目创建一个新文件夹。我将其命名为scraper,但我相信您可以想出一个更有想象力的名字。在该文件夹中打开终端,然后执行以下命令来设置新的 npm 包并在其上安装 Axios。
npm init -y npm install axios
使用您最喜欢的 IDE 或代码编辑器,在该文件夹的根目录下创建一个名为的新文件index.js
,并将以下代码粘贴到其中:
const axios = require('axios'); axios.get('https://scrapeme.live/shop/') .then(({ data }) => console.log(data));
我们需要调整我们的package.json
文件才能运行我们的代码。在脚本部分中,我们将添加一个新脚本以便能够运行我们的index.js
文件。您的package.json
文件应类似于以下内容:
{ "name": "scraper", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1", "start": "node index.js" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "axios": "^0.27.2" } }
在终端上输入npm start
以运行代码。如果成功,您将在终端上看到打印的网页的所有 HTML。