利用TypeScript 和 jsdom 库实现自动化抓取数据

以下是一个使用 TypeScript 和 jsdom 库的下载器程序,用于下载zhihu的内容。此程序使用了 duoip.cn/get_proxy 这段代码。

typescript 复制代码
import { JSDOM } from 'jsdom';
import { getProxy } from 'https://www.duoip.cn/get_proxy';

const zhihuUrl = 'https://www.zhihu.com';

(async () => {
  // 获取代理服务器
  const proxy = await getProxy();
  console.log('使用代理服务器:', proxy);

  // 创建一个 JSDOM 实例,并设置代理服务器
  const dom = new JSDOM(`<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body></body></html>`, {
    proxy: proxy,
    userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
  });

  // 使用 fetch 方法获取 zhihu 主页内容
  const response = await dom.window.fetch(zhihuUrl);
  const html = await response.text();

  // 打印获取到的 HTML 内容
  console.log('zhihu 主页 HTML:', html);
})();

这个程序首先引入了 JSDOM 和 getProxy 函数。然后定义了一个名为 zhihuUrl 的常量,用于存储要下载的 URL。接下来,使用 async/await 语法定义了一个异步函数,用于执行下载操作。

首先,调用 getProxy 函数获取代理服务器。然后,创建一个 JSDOM 实例,并为其设置代理服务器和用户代理。接着,使用 dom.window.fetch 方法获取 zhihu 主页内容,并将结果存储在 html 变量中。最后,将获取到的 HTML 内容打印出来。

相关推荐
kyriewen10 小时前
别再对着 TypeScript 报错发呆了:我把 10 个最常见的红色波浪线翻译成了人话
前端·javascript·typescript
free3511 小时前
从 0 实现一个 Tiny JavaScript VM:项目架构拆解
javascript
徐小夕12 小时前
我们开源了一款“框架无关”的思维导图编辑器,3分钟集成到任意系统
前端·javascript·github
PBitW12 小时前
GPT训练我的第三天,明白了应该咋说满分回答!😕😕😕
前端·javascript·面试
像我这样帅的人丶你还13 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
labixiong13 小时前
还原一个完整符合规范的 Promise(二)
前端·javascript
To_OC14 小时前
万字解析《JS 语言精粹》之第五章:继承 5 大核心精髓(JS 原型核心)
前端·javascript·代码规范
裕波15 小时前
AI 正在重写应用开发。Vue 与 Vite,给出新的答案。
javascript·vue.js
妙码生花15 小时前
现代前端的极致性能 icon 加载方案(死磕成功版)
前端·vue.js·typescript
kyriewen16 小时前
折腾了半年 AI 编程工作流,最后发现效率瓶颈是桌上那块屏幕
前端·javascript·ai编程