欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 用TypeScript和got库编写爬虫程序指南

用TypeScript和got库编写爬虫程序指南

2025/4/18 6:32:46 来源:https://blog.csdn.net/weixin_44617651/article/details/147062209  浏览:    关键词:用TypeScript和got库编写爬虫程序指南

用TypeScript和got库写一个爬虫程序。首先,我得确认他们对TypeScript和Node.js的基础了解,可能他们已经有了一些JS的经验,但不确定。接下来,需要明确爬虫的目标,比如要爬取的网站、需要的数据类型以及处理方式。

首先,得考虑项目的初始化。要创建一个TypeScript项目,可能需要用npm或yarn初始化,安装TypeScript和相关类型定义。然后,安装got库,它是一个流行的HTTP请求库,替代了之前的request库。同时,可能需要cheerio来解析HTML内容,这样方便用类似jQuery的方法提取数据。

然后,设置TypeScript的配置文件tsconfig.json,确保输出目录和模块系统正确。接着,编写主程序文件,比如src/index.ts。在代码中,需要导入got和cheerio,发送GET请求获取页面内容,然后用cheerio加载HTML进行解析。

大家可能想爬取特定结构的数据,比如文章标题和链接。所以,需要选择器方面的知识,比如类名或标签选择器。要提醒大家注意网站的法律条款和robots.txt,避免法律问题。此外,可能需要设置请求头,比如User-Agent,模拟浏览器访问,防止被屏蔽。

另外,错误处理也很重要。网络请求可能会失败,所以要用try-catch块,处理可能的异常。还有,异步函数的使用,比如async/await,确保代码的流程正确。可能还需要设置延迟,避免对目标网站造成过大压力,导致IP被封。

在这里插入图片描述

下面是一个使用 TypeScript 和 got 库编写的简单爬虫程序示例,包含详细步骤说明:

1. 初始化项目

mkdir ts-crawler
cd ts-crawler
npm init -y
npm install typescript ts-node @types/node --save-dev
npm install got cheerio  # 安装 HTTP 客户端和 HTML 解析器
npx tsc --init

2. 基本代码实现 (src/index.ts)

import got from 'got';
import * as cheerio from 'cheerio';interface Article {title: string;url?: string;
}// 示例爬虫:爬取掘金首页文章列表
async function crawlJuejin(): Promise<Article[]> {try {// 发送 HTTP 请求const response = await got('https://juejin.cn/', {headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}});// 使用 cheerio 解析 HTMLconst $ = cheerio.load(response.body);const articles: Article[] = [];// 通过选择器提取数据$('.entry-list .entry').each((index, element) => {const title = $(element).find('.title').text().trim();const url = $(element).find('.title').attr('href');articles.push({ title, url });});return articles;} catch (error) {console.error('爬取失败:', error);return [];}
}// 执行爬虫
(async () => {const articles = await crawlJuejin();console.log(`共爬取到 ${articles.length} 篇文章`);console.log(articles.slice(0, 3));  // 打印前3条结果
})();

3. 配置 TypeScript (tsconfig.json)

确保以下配置已启用:

{"compilerOptions": {"target": "ES2020","module": "CommonJS","outDir": "./dist","strict": true,"esModuleInterop": true,"skipLibCheck": true,"forceConsistentCasingInFileNames": true}
}

4. 添加运行脚本 (package.json)

{"scripts": {"start": "ts-node src/index.ts","build": "tsc","run": "node dist/index.js"}
}

5. 运行程序

npm start
# 或编译后运行
npm run build && npm run run

功能说明:

  1. 使用 got 发送 HTTP 请求并自动处理响应
  2. 通过 cheerio 实现类似 jQuery 的 DOM 操作
  3. 设置 User-Agent 头模拟浏览器访问
  4. 使用 TypeScript 接口定义数据结构
  5. 包含错误处理机制

高级功能扩展建议:

  1. 添加延迟防止封禁:
import { setTimeout } from 'timers/promises';async function crawlWithDelay() {await setTimeout(1000); // 1秒延迟// 爬取逻辑...
}
  1. 使用代理服务器:
const response = await got(url, {proxy: 'http://user:pass@host:port'
});
  1. 处理分页:
for (let page = 1; page <= 5; page++) {const url = `https://example.com/page/${page}`;// 爬取每个页面...
}

注意事项:

  1. 遵守目标网站的 robots.txt 规则
  2. 尊重网站的服务条款
  3. 控制请求频率避免对目标服务器造成压力
  4. 添加适当的异常处理
  5. 可能需要处理反爬虫机制(验证码、IP限制等)

根据实际需求,你可以通过以下方式修改代码:

  • 调整 CSS 选择器匹配目标网站结构
  • 修改数据存储方式(保存到文件/数据库)
  • 添加登录认证逻辑
  • 实现更复杂的爬取策略

请确保你的爬虫使用符合法律法规和网站的服务条款。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词