福布斯是一家商业和金融新闻网站,提供关于全球行业、公司和人物的大量信息。福布斯每月的访问量达数百万。他们提供亿万富翁排名、商业趋势和分析。福布斯使用 JavaScript 动态加载其内容,因此使用传统工具抓取有点棘手。
本教程将向您展示如何使用 木偶戏,一款无头浏览器。一旦你掌握了基础知识,我们将介绍如何使用 Crawlbase 爬取 API 优化数据提取。借助这些工具,您可以收集福布斯数据用于研究、分析或个人项目。
目录
- 为什么要从《福布斯》抓取数据?
- 从《福布斯》中抓取的关键数据点
- 设置你的抓取环境
- 使用 Puppeteer 抓取 Forbes 数据
- 检查 HTML 结构
- 编写 Puppeteer 抓取工具
- 将数据存储在 JSON 文件中
- 使用 Crawlbase Crawling API 优化 Forbes 爬取
- Crawlbase爬取API简介
- 如何在 Forbes 中使用 Crawlbase
- Crawlbase 的代码示例
- 总结
- 常见问题
为什么要从《福布斯》抓取数据?
不可否认,《福布斯》拥有大量与商业、金融和生活方式相关的信息。抓取《福布斯》数据确实可以让您关注多个方面,例如最新的商业趋势或亿万富翁财富分析。以下是从《福布斯》抓取数据的一些主要原因:
- 亿万富翁排行榜:福布斯是全球亿万富翁排行榜的常客。可以抓取这些数据来查看财富随时间的变化情况。
- 公司信息:在了解企业经营状况方面,《福布斯》拥有最出色的公司简介。
- 行业洞见:福布斯提供各种领域的文章,包括技术、金融、医疗保健等。抓取数据以跟踪特定行业和趋势。
- 财经新闻:福布斯发布有关世界经济和市场的实时新闻和更新。抓取这些数据可以跟踪重大金融事件。
从《福布斯》中抓取的关键数据点
在抓取《福布斯》数据时,你可能想要提取许多数据点。你需要查看的一些基本数据点包括:
- 亿万富翁简介:福布斯提供了全球最富有人士的详细传记。这些资料包括财富来源、行业、净资产和原籍国。
- 公司简介:福布斯提供有关企业的综合数据,例如收入、员工人数和行业。使用这些数据可以比较企业或长期关注特定行业。
- 排行榜:《福布斯》以其“顶级”榜单而闻名,其中包括前 100 位亿万富翁、顶级跨国公司和顶级初创公司。
- 文章和新闻:福布斯刊登有关商业、金融和生活方式的突发新闻和深度文章。要了解该领域的最新新闻、趋势和专家意见,请抓取福布斯文章。
- 市场数据:网站上提供股票价格、市场趋势和经济预测等金融信息。要跟踪金融市场并获得实时见解,请抓取福布斯市场数据。
设置你的抓取环境
为了抓取福布斯数据,我们需要设置项目环境。我们需要安装 Node.js、Puppeteer 和其他所需的库。请按照以下步骤操作。
安装 Puppeteer
Puppeteer 是一个 Node.js 库,它提供了用于控制 Chrome 或 Chromium 的高级 API,非常适合抓取《福布斯》等动态内容。要安装 Puppeteer,请按以下步骤操作:
- 确保你的系统上安装了 Node.js。你可以从此处下载 Node.js官方网站.
- 有了 Node.js 后,打开终端并运行以下命令来安装 Puppeteer:
此命令将与 Chromium 一起安装 Puppeteer,Puppeteer 使用 Chromium 运行无头浏览器来抓取网站。
设置您的项目
Puppeteer 已安装。现在设置您的项目文件夹并初始化 Node.js。请按以下步骤操作:
- 为您的项目创建一个新目录:
- 通过运行以下命令初始化新的 Node.js 项目:
该命令将创建一个 package.json
文件,用于管理您的项目依赖项。
这样就完成了 Forbes 抓取环境的设置。接下来,我们将深入编写 Puppeteer 抓取工具。
使用 Puppeteer 抓取 Forbes 数据
现在我们已经设置好了环境,我们将开始使用 Puppeteer 抓取《福布斯》。在本节中,我们将检查 HTML、编写抓取工具、处理动态内容,并将抓取的数据存储在 JSON 文件中。在本例中,我们将抓取 福布斯世界亿万富翁榜 2024.
检查 HTML 结构
在编写抓取工具之前,我们先检查一下《福布斯》网站的 HTML。这将帮助我们识别包含数据的关键元素。
查看亿万富翁名单页面
- 访问页面:前往福布斯世界亿万富翁榜。
- 打开开发者工具:右键单击页面上的任意位置并选择“检查”或按
Ctrl+Shift+I
打开开发人员工具。
- 寻找关键要素:
- 亿万富翁姓名/链接:通常包含在
<a>
带有类似类别的标签 color-link
。在这里您可以获得每个亿万富翁的个人资料链接。
抓取亿万富翁的个人资料
- 导航至个人资料:单击列表中的链接即可打开亿万富翁的个人资料页面。
- 打开开发者工具:右键单击页面上的任意位置并选择“检查”或按
Ctrl+Shift+I
打开开发人员工具。
- 要寻找的关键要素:
- 秩:查找排名,通常在
<div>
or <span>
像 listuser-item__list--rank
. - 名称:通常在标题标签内,例如
<h1>
像 listuser-header__name
. - 组织:发现于
<a>
or <span>
具有组织相关类别的元素。 - 净值:通常在
<div>
类似这样的课程 profile-info__item-value
. - 个人简介:通常在无序列表中出现(
<ul>
) 元素。 - 附加数据:标题和文本可以在具有以下类的元素中找到
profile-stats__title
和 profile-stats__text
.
编写 Puppeteer 抓取工具
现在,我们可以编写 Puppeteer 抓取工具了。以下代码演示了如何启动 Puppeteer、打开 Forbes 页面并抓取关键数据点。
范例程式码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| 常量 傀儡师= 要求(‘傀儡师’); 常量 FS = 要求('fs');
异步 功能 scrape亿万富翁(){ 常量 浏览器= 等待 木偶师。发射({ 无头: true }); 常量 页 = 等待 浏览器。新的一页();
等待 页面。转到( 'https://www.forbes.com/sites/chasewithorn/2024/04/02/forbes-worlds-billionaires-list-2024-the-top-200/?sh=67b3016430a7', { 超时: 0, }, );
常量 链接 = 等待 页面.$$eval(‘a.颜色链接’, (链接) => 链接。片(2).地图((链接) => 链接。HREF)); 常量 亿万富翁名单 = [];
(让 链接 of 链接){ 尝试 { 等待 页面。转到(关联, { 超时: 0 });
常量 排名 = 等待 页面.$eval(‘.listuser-item__list--等级’, (el) => 埃尔。内部文本.修剪())。捕捉(() => “不适用”);
常量 姓名 = 等待 页面.$eval(‘h1.listuser-header__name’, (el) => 埃尔。内部文本.修剪())。捕捉(() => “不适用”);
常量 标题= 等待 页 .$eval('div.listuser-header__headline-默认', (el) => 埃尔。内部文本.修剪()) .捕捉(() => “不适用”);
常量 组织 = 等待 页 .$eval(‘a.listuser-header__organization’, (el) => 埃尔。内部文本.修剪()) .捕捉(() => “不适用”);
常量 净值 = 等待 页面.$eval(‘div.profile-info__item-值’, (el) => 埃尔。内部文本.修剪())。捕捉(() => “不适用”);
常量 简历 = 等待 页面.$eval(‘ul’, (el) => 埃尔。内部文本.修剪())。捕捉(() => “不适用”);
常量 堆栈数据 = 等待 页面。评估(() => { 让 数据={}; 常量 标题 = 排列.from(文件.查询选择器全部(‘.profile-stats__title’)); 常量 文本 = 排列.from(文件.查询选择器全部(‘.profile-stats__text’)); 标题。每次((标题,我) => (数据[标题。内部文本.修剪()] = 文本[i].内部文本.修剪())); 回报 日期; });
亿万富翁名单。推({ 秩:排名, 名称: 姓名, 职位名称: 标题, 组织: 组织, 净值:净资产, 堆:堆栈数据, 简介:个人简介, }); } 捕捉 (呃) { 领事.日志(`错误抓取 ${链接}: ${err}`); } }
等待 浏览器。关闭(); 回报 亿万富翁名单; }
scrape亿万富翁()。然后((data) => { 领事.日志(数据); });
|
将数据存储在 JSON 文件中
一旦数据被抓取,我们需要将其保存为 JSON 等结构化格式以供后续使用。
范例程式码:
1 2 3 4 5 6 7 8
| 异步 功能 保存数据至文件(数据,文件名 = ‘福布斯亿万富翁.json’){ fs。写文件同步(文件名, JSON.串化(数据, 空, 2), 'utf-8'); 领事.日志(`数据保存至 ${文件名}`); }
scrape亿万富翁()。然后((data) => { 保存数据至文件(数据); });
|
这会将所有抓取的文章存储在 forbes_billionaires.json
文件,使得数据将来易于访问和使用。
完整代码示例
以下是包含所有步骤的完整代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| 常量 傀儡师= 要求(‘傀儡师’); 常量 FS = 要求('fs');
异步 功能 scrape亿万富翁(){ 常量 浏览器= 等待 木偶师。发射({ 无头: true }); 常量 页 = 等待 浏览器。新的一页();
等待 页面。转到( 'https://www.forbes.com/sites/chasewithorn/2024/04/02/forbes-worlds-billionaires-list-2024-the-top-200/?sh=67b3016430a7', { 超时: 0, }, );
常量 链接 = 等待 页面.$$eval(‘a.颜色链接’, (链接) => 链接。片(2).地图((链接) => 链接。HREF)); 常量 亿万富翁名单 = [];
(让 链接 of 链接){ 尝试 { 等待 页面。转到(关联, { 超时: 0 });
常量 排名 = 等待 页面.$eval(‘.listuser-item__list--等级’, (el) => 埃尔。内部文本.修剪())。捕捉(() => “不适用”);
常量 姓名 = 等待 页面.$eval(‘h1.listuser-header__name’, (el) => 埃尔。内部文本.修剪())。捕捉(() => “不适用”);
常量 标题= 等待 页 .$eval('div.listuser-header__headline-默认', (el) => 埃尔。内部文本.修剪()) .捕捉(() => “不适用”);
常量 组织 = 等待 页 .$eval(‘a.listuser-header__organization’, (el) => 埃尔。内部文本.修剪()) .捕捉(() => “不适用”);
常量 净值 = 等待 页面.$eval(‘div.profile-info__item-值’, (el) => 埃尔。内部文本.修剪())。捕捉(() => “不适用”);
常量 简历 = 等待 页面.$eval(‘ul’, (el) => 埃尔。内部文本.修剪())。捕捉(() => “不适用”);
常量 堆栈数据 = 等待 页面。评估(() => { 让 数据={}; 常量 标题 = 排列.from(文件.查询选择器全部(‘.profile-stats__title’)); 常量 文本 = 排列.from(文件.查询选择器全部(‘.profile-stats__text’)); 标题。每次((标题,我) => (数据[标题。内部文本.修剪()] = 文本[i].内部文本.修剪())); 回报 日期; });
亿万富翁名单。推({ 秩:排名, 名称: 姓名, 职位名称: 标题, 组织: 组织, 净值:净资产, 堆:堆栈数据, 简介:个人简介, }); } 捕捉 (呃) { 领事.日志(`错误抓取 ${链接}: ${err}`); } }
等待 浏览器。关闭(); 回报 亿万富翁名单; }
异步 功能 保存数据至文件(数据,文件名 = ‘福布斯亿万富翁.json’){ fs。写文件同步(文件名, JSON.串化(数据, 空, 2), 'utf-8'); 领事.日志(`数据保存至 ${文件名}`); }
scrape亿万富翁()。然后((data) => { 保存数据至文件(数据); });
|
示例输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| [ { “秩”:“#1”, “姓名”:“伯纳德·阿诺及其家族”, “标题”:“LVMH 集团董事长兼首席执行官”, “组织”:“LVMH 酩悦轩尼诗路易威登”, “净值”:“219.2亿美元”, “堆”:{ “年龄”:“75”, “财富之源”:“LVMH”, “住宅”:“法国巴黎”, “国籍”:“法国”, “婚姻状况”:“已婚”, “孩子们”:“5”, “教育”:“巴黎综合理工学院文学/理学学士” }, “简历”:“伯纳德·阿诺 (Bernard Arnault) 掌管着 LVMH 集团,该集团旗下有 75 个时尚和化妆品品牌,包括路易威登 (Louis Vuitton) 和丝芙兰 (Sephora)。\nLVMH 于 2021 年以 15.8 亿美元收购了美国珠宝商蒂芙尼 (Tiffany & Co),据信这是有史以来最大的奢侈品牌收购案。\n阿诺的控股公司 Agache 支持风险投资公司 Aglaé Ventures,后者投资了 Netflix 和 TikTok 母公司字节跳动 (ByteDance) 等企业。\n他的父亲在建筑业发了一笔小财;阿诺于 15 年从该业务中拿出 1984 万美元收购了 Christian Dior,从此起步。\n阿诺的五个孩子都在 LVMH 工作;2022 年 XNUMX 月,他提议重组其控股公司 Agache,让他们享有同等股份。” }, { “秩”:“#2”, “姓名”:“埃隆马斯克”, “标题”:“特斯拉首席执行官”, “组织”:“特斯拉”, “净值”:“189.2亿美元”, “堆”:{ “年龄”:“52”, “财富之源”:“特斯拉、SpaceX、白手起家”, “自制乐谱”:“8”, “慈善评分”:“1”, “住宅”:“德克萨斯州奥斯汀”, “国籍”:“美国”, “婚姻状况”:“单身的”, “孩子们”:“11”, “教育”:“宾夕法尼亚大学文科/理科学士” }, “简历”:“埃隆·马斯克与他人共同创立了六家公司,包括电动汽车制造商特斯拉、火箭生产商 SpaceX 和隧道初创公司 Boring Company。\n他拥有特斯拉约 12% 的股份(不包括期权),但已将其一半以上的股份作为高达 3.5 亿美元的个人贷款的抵押品。\n2024 年初,特拉华州的一名法官宣布马斯克 2018 年达成的获得相当于特斯拉额外 9% 期权的交易无效。《福布斯》已将这些期权的价格下调了 50%,等待马斯克的上诉。\nSpaceX 成立于 2002 年,在 180 年 2023 月高达 750 亿美元的要约收购后,其价值接近 2022 亿美元;SpaceX 的股价在四年内增长了五倍。\n马斯克于 44 年以 74 亿美元收购了 Twitter,后来试图退出这笔交易。他拥有该公司约 70% 的股份,现在称为 X。\n《福布斯》估计,马斯克在 X 的股份现在的价值比他根据投资者富达对该公司截至 2023 年 XNUMX 月的估值支付了这笔费用。” }, { “秩”:“#3”, “姓名”:“杰夫·贝索斯”, “标题”:“亚马逊董事长兼创始人”, “组织”:“亚马逊”, “净值”:“202.4亿美元”, “堆”:{ “年龄”:“60”, “财富之源”:“亚马逊,白手起家”, “自制乐谱”:“8”, “慈善评分”:“2”, “住宅”:“佛罗里达州迈阿密”, “国籍”:“美国”, “婚姻状况”:“已订婚的”, “孩子们”:“4”, “教育”:“普林斯顿大学文科/理科学士” }, “简历”:“杰夫·贝索斯于 1994 年在西雅图的车库里创立了电子商务巨头亚马逊。\n贝索斯于 2021 年辞去首席执行官一职,出任执行董事长。他拥有该公司不到 10% 的股份。\n他和妻子麦肯齐在结婚 2019 年后于 25 年离婚,他将当时 16% 的亚马逊股份的四分之一转让给了她。\n贝索斯在 1.1 年向非营利组织捐赠了价值超过 2023 万美元的股票,但目前尚不清楚哪些组织获得了这些股份\n他拥有《华盛顿邮报》和蓝色起源,一家开发火箭的航空航天公司;他于 2021 年 2022 月短暂乘坐火箭飞往太空。\n贝索斯在 XNUMX 年 XNUMX 月接受 CNN 采访时表示,他计划在有生之年捐出大部分财富,但没有透露具体细节。” }, { “秩”:“#4”, “姓名”:“马克·扎克伯格”, “标题”:“Meta Platforms 联合创始人”, “组织”:“元平台”, “净值”:“184.3亿美元”, “堆”:{ “年龄”:“39”, “财富之源”:“Facebook,白手起家”, “自制乐谱”:“8”, “慈善评分”:“2”, “住宅”:“加利福尼亚州帕洛阿尔托”, “国籍”:“美国”, “婚姻状况”:“已婚”, “孩子们”:“3”, “教育”:“从哈佛大学辍学” }, “简历”:“19 年,2004 岁的马克·扎克伯格创办了 Facebook,让学生们将名字与同学的照片进行匹配。\n扎克伯格于 2012 年将 Facebook 上市,他现在拥有该公司约 13% 的股份。\nFacebook 于 2021 年更名为 Meta,将公司的重点转移到元宇宙。\n2015 年,扎克伯格和他的妻子普莉希拉·陈承诺在有生之年捐出 99% 的 Meta 股份。” }, .... 更多的 ]
|
在下一部分中,我们将讨论如何使用 Crawlbase Crawling API 优化 Forbes 抓取。
使用 Crawlbase Crawling API 优化 Forbes 爬取
Puppeteer 非常适合抓取动态网站,但在处理大数据或像 Forbes 这样的 JavaScript 密集型页面时速度很慢。为了优化抓取和性能,我们可以使用 Crawlbase 爬取 API,它简化了处理 JavaScript 呈现的内容并提供更多的控制和效率。
Crawlbase爬取API简介
Crawlbase Crawling API 可绕过常见的网络抓取挑战,如 CAPTCHA、动态内容加载和复杂的 HTML 结构。对于抓取,Forbes Crawlbase 通过直接处理 JavaScript 渲染提供了一种简化的解决方案,使其成为大型抓取项目 Puppeteer 的更高效替代方案。
为什么要使用 Crawlbase 来抓取《福布斯》的数据?
- 处理动态内容:针对《福布斯》等 JavaScript 密集型页面进行了优化。
- 提高速度和可扩展性:无需无头浏览器,抓取速度更快。
- 简化流程:轻松调用 API 来抓取数据,内置 CAPTCHA 和反抓取机制。
如何在 Forbes 中使用 Crawlbase
要使用 Crawlbase 抓取《福布斯》数据,您需要注册并获取 API 令牌。以下是入门方法:
- 注册 Crawlbase:创建一个帐户 爬虫库 并获取您的 API 令牌。您需要 Forbes 的 JS 令牌。
- 安装 Crawlbase 库:在您的 Node.js 环境中,使用以下命令安装 Crawlbase Crawling API 库:
- 设置您的请求:使用您的令牌初始化 Crawlbase API 并发出 GET 请求来抓取福布斯数据。
Crawlbase 的代码示例
以下是使用 Crawlbase JavaScript 库更有效地抓取福布斯数据的代码示例:
范例程式码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| 常量 { 抓取API } = 要求('crawlbase'); 常量 欢呼= 要求('cheerio'); 常量 FS = 要求('fs');
常量 接口= 新 抓取API({ 象征: 'CRAWLBASE_JS_TOKEN' });
异步 功能 fetchForbesHTML(网址){ 尝试 { 常量 响应 = 等待 蜜蜂。得到(网址,{ ajax_等待: '真的', 页面等待: '5000', });
if (回复。状态码 === 200){ 回报 响应。身体; } 其他 { 领事.日志(`无法获取数据。状态代码: ${response.statusCode}`); 回报 空; } } 捕捉 (错误) { 领事.错误(`获取数据时出错: ${错误}`); 回报 空; } }
异步 功能 解析福布斯数据(HTML){ 常量 $ = 快乐。加载(html);
让 亿万富翁名单 = []; $(‘.颜色链接’) .片(2) .每(异步 功能 (){ 常量 链接 = $(Free Introduction).属性('href');
尝试 { 常量 详细页面Html = 等待 fetchForbesHTML(关联); 常量 $page = cheerio。加载(详细页面HTML);
让 排名 = $page(‘.listuser-item__list--等级’).文本()。修剪()|| “不适用”; 让 名称 = $page(‘h1.listuser-header__name’).文本()。修剪()|| “不适用”; 让 标题 = $page('div.listuser-header__headline-默认').文本()。修剪()|| “不适用”; 让 组织 = $page(‘a.listuser-header__organization’).文本()。修剪()|| “不适用”; 让 净值 = $page(‘div.profile-info__item-值’).文本()。修剪()|| “不适用”; 让 简历 = $page(‘ul’).文本()。修剪()|| “不适用”; 让 堆栈数据 = {};
$页(‘.profile-stats__title’).每((我) => { 让 标题 = $(el).文本()。修剪(); 让 文本 = $page(‘.profile-stats__text’).eq(一世)。文本()。修剪(); 堆栈数据[标题] = 文本; });
亿万富翁名单。推({ 秩:排名, 名称: 姓名, 职位名称: 标题, 组织: 组织, 净值:净资产, 堆:堆栈数据, 简介:个人简介, }); } 捕捉 (呃) { 领事.错误(`解析数据时出错 ${链接}: ${err}`); } });
回报 亿万富翁名单; }
异步 功能 保存至文件(数据,文件名 = ‘福布斯亿万富翁.json’){ fs。写文件同步(文件名, JSON.串化(数据, 空, 2), 'utf-8'); 领事.日志(`数据保存至 ${文件名}`); }
(异步 功能 (){ 常量 网址= 'https://www.forbes.com/sites/chasewithorn/2024/04/02/forbes-worlds-billionaires-list-2024-the-top-200/?sh=67b3016430a7'; 常量 html = 等待 fetchForbesHTML(网址); if (html){ 常量 数据 = 等待 解析福布斯数据(html); 等待 保存至文件(数据); } })();
|
守则说明:
- 初始化 Crawlbase:
CrawlingAPI
使用您的 Crawlbase 令牌初始化以访问抓取 API。 - 获取请求: 我们用
api.get()
抓取《福布斯》的 URL。我们使用 ajax_wait
和 page_wait
以确保所有动态内容加载。 - HTML解析: 我们用
cheerio
解析 HTML 并提取关键数据点。 - 数据存储:提取的数据保存到JSON文件中。
这样,抓取《福布斯》的效率更高,Crawlbase 可以处理 JavaScript 渲染和复杂的内容结构。
使用 Crawlbase 优化《福布斯》爬取
无论您分析的是商业趋势、财经新闻还是顶级公司排名,从《福布斯》抓取数据都非常有用。虽然 Puppeteer 等工具非常适合处理 JavaScript 渲染的页面,但它们耗时且资源密集。使用 Crawlbase Crawling API 可简化流程并加快动态内容抓取速度。
按照本指南抓取《福布斯》数据并使用 Crawlbase 扩展您的项目。此方法是抓取《福布斯》等网站的可靠且优化的方法。如果您希望扩展您的网页抓取能力,请考虑探索我们关于抓取其他重要网站的以下指南。
📜 如何抓取Monster.com
📜 如何抓取 Groupon
📜 如何抓取 TechCrunch 的内容
📜 如何抓取 X.com 推文页面
📜 如何抓取 Clutch.co
如果您有任何问题或反馈,我们的 支持团队 随时为您的网络抓取之旅提供帮助。快乐刮擦!
常见问题
问:抓取《福布斯》数据合法吗?
抓取任何网站(包括《福布斯》)都应遵守其服务条款。务必检查网站的 robots.txt
文件并确保您没有违反任何有关数据提取的条款。使用 Crawlbase 等 API 可帮助您高效地抓取数据,同时遵循最佳实践。
问:为什么我应该使用 Crawlbase Crawling API 而不是 Puppeteer 来抓取《福布斯》?
虽然 Puppeteer 是处理 JavaScript 渲染的强大工具,但它可能很慢且占用大量资源。Crawlbase Crawling API 通过提供处理动态内容的预配置选项简化了该过程,从而加快了抓取速度并减少了手动管理浏览器会话所需的工作量。
问:抓取《福布斯》上的动态内容时,该如何处理?
《福布斯》使用 JavaScript 动态加载其大部分内容。使用 Puppeteer 或 Crawlbase Crawling API 以及以下选项 ajax_wait
和 page_wait
,您可以确保在抓取之前内容已完全加载。这可确保您从页面捕获所有相关数据。