2022-08-17 13:16:31 +08:00
## 牛客网 面试宝典爬取工具
### 项目简介
2022-08-17 13:42:07 +08:00
可以爬取牛客网 [面经汇总 ](https://www.nowcoder.com/interview/center ) 页面下**面试宝典**部分教程(如:[Java工程师面试宝典](https://www.nowcoder.com/issue/tutorial?tutorialId=94)),并且转换成 pdf 文件,方便打印出来学习。
2022-08-17 13:16:31 +08:00
2022-08-17 13:49:59 +08:00
> 【注意】本项目仅用于学习、研究使用, 不得使用项目代码从事任何侵权或违法的行为, 请与下载后48小时之内删除。
2022-08-17 13:42:07 +08:00
### 项目开发
2022-08-17 13:16:31 +08:00
2022-08-17 13:42:07 +08:00
- 项目使用nodejs开发
2022-08-17 13:16:31 +08:00
2022-08-17 13:42:07 +08:00
- 项目使用 [wkhtmltopdf ](https://wkhtmltopdf.org/ ) 将爬取到的 html 转换为 pdf 文件,所以如果您需要生成 pdf 文件,需要安装一下。
2022-08-17 13:16:31 +08:00
### 项目使用
首先克隆仓库,并进入项目目录
```bash
2022-08-17 13:42:07 +08:00
git clone https://git.only4.work/coder-xiaomo/nowcoder-bible
cd nowcoder-bible
2022-08-17 13:16:31 +08:00
```
2022-08-17 13:42:07 +08:00
然后通过 npm 安装依赖
2022-08-17 13:16:31 +08:00
```bash
npm i
```
修改 `main.js` 代码
2022-08-17 13:42:07 +08:00
(1) 指定需要爬取的教程id
例如我们现在需要爬取这篇教程: https://www.nowcoder.com/issue/tutorial?tutorialId=94& uuid=ea1986fcff294f6292385703e94689e8
那么我们找到链接中的 `tutorialId` (例如上面的链接就是 `94` )
并修改 `main()` 方法中的 `urlContent` 地址最后的序号为上面链接中的 `tutorialId` ,例如:
```javascript
let urlContent = "https://www.nowcoder.com/content/tutorial/catalog/94";
```
(2) 如果您只需要爬取 html 文件而无需转换为 pdf, 那么请注释掉 `getDetail()` 方法中的如下行:
```javascript
await transferToPDF(/* ** **** */);
```
否则,请安装 wkhtmltopdf
(3) 如果您已经爬取了 html, 需要将其转换为 pdf, 那么请修改代码最后的调用函数( 由 `main()` 改为 `transferHTMLToPDF()` ),如下:
```javascript
// 爬取 + 转换为pdf
// main();
// 已经爬取过, 只需要转pdf
transferHTMLToPDF();
```
在项目文件夹下,运行如下命令以启动
2022-08-17 13:16:31 +08:00
```bash
node main.js
```
2022-08-17 13:42:07 +08:00
等待爬取完成,完成后文件将会保存在 `output/html` 和 `output/pdf` 文件夹下。
2022-08-17 13:16:31 +08:00