从爬虫实战出发:零基础用 JavaScript 探索技术世界

代码洁癖患者
2025-12-25 19:07
阅读 285

大家好,我是一名开源项目维护者,也长期在社区做 AIGC 相关的技术分享。最近收到不少初学者的私信:“想转行做开发,但不知道从哪开始”“听说 JavaScript 很重要,但看不懂代码”“想做点小项目丰富简历,又怕太难”……这些焦虑我都懂——我当初学编程时,连“变量”是什么都要查半小时

今天这篇教程,就带你用最接地气的方式,从一个真实的求职场景出发,亲手写一个能放进简历的 JavaScript 爬虫小工具。全程零基础友好,只要你愿意动手,就能走完这段探索之旅。


为什么从爬虫开始?

很多新手一听到“爬虫”,就觉得是黑客技术、高深莫测。其实不然。爬虫的本质就是“自动下载网页内容”,就像你用浏览器打开一个招聘网站,然后复制粘贴职位信息一样——只不过我们用代码让它自动完成。

对求职者来说,这更是个黄金技能:

  • 能抓取招聘信息,分析哪些技能最吃香
  • 可以批量收集公司数据,做个性化投递策略
  • 写进简历里,证明你有“解决问题+动手实践”的能力

更重要的是:它能让你快速理解 JavaScript 的核心逻辑,比如请求、解析、循环、函数——这些都是前端、后端甚至自动化脚本的基础。


第一步:搭好你的“工具箱”

别担心!我们不需要安装复杂的软件。只需要两样东西:

  1. Node.js(JavaScript 的运行环境)
  2. 一个代码编辑器(推荐 VS Code)

安装 Node.js(3 分钟搞定)

  1. 打开官网 https://nodejs.org
  2. 点击 LTS 版本(长期支持版,更稳定)下载
  3. 双击安装包,一路“下一步”即可

✅ 验证是否成功:

node -v
npm -v

如果看到版本号(如 v18.17.0),说明安装成功!

💡 小贴士:Node.js 让 JavaScript 不仅能在浏览器里跑,还能在电脑本地运行——这是写爬虫的关键!

安装 VS Code

https://code.visualstudio.com 下载安装即可。它免费、轻量、对新手极其友好。


核心概念:用“寄快递”理解网络请求

在写代码前,先搞懂一件事:你的程序怎么拿到网页内容?

想象你要寄一个包裹:

  • 你(客户端) → 告诉快递员(浏览器/Node.js) → 去某地址(URL)取件(HTML 内容)

这个过程,在技术上叫 HTTP 请求(Request)和响应(Response)

在 JavaScript 中,我们常用 fetch 或第三方库(如 axios)来发请求。但为了简单,我们先用 Node.js 内置的 https 模块。

不过——新手常犯的错误是直接请求复杂网站。很多网站会检测“是不是真人”,如果不是,就返回空或验证码。

所以,我们的第一个目标选一个简单、公开、无反爬的网站。


实战项目:抓取一本编程书籍的免费章节

我们以 https://example.com 为例(注:这是一个标准测试域名,实际我们会用真实可访问的资源)。但为了教学安全,我们改用一个公开的 JSON API 来模拟抓取过程——这样既合法,又能学到核心逻辑。

📚 真实场景建议:可抓取 GitHub 公开仓库、豆瓣读书公开接口(注意遵守 robots.txt)、或自己搭建的测试页面。

步骤 1:创建项目文件夹

在桌面新建文件夹 my-first-crawler,打开 VS Code。

步骤 2:初始化项目

在终端执行:

npm init -y

这会生成一个 package.json 文件,记录项目信息。

步骤 3:写第一段爬虫代码

新建文件 crawler.js,输入以下代码:

// 引入内置模块
const https = require('https');

// 目标 URL:一个提供免费编程书籍信息的公开 API
const url = 'https://api.publicapis.org/entries?category=books';

https.get(url, (response) => {
  let data = '';

  // 当接收到数据片段时,拼接到 data
  response.on('data', (chunk) => {
    data += chunk;
  });

  // 当所有数据接收完毕
  response.on('end', () => {
    try {
      const jsonData = JSON.parse(data);
      console.log('共找到', jsonData.count, '个书籍相关 API');
      
      // 打印前3个
      jsonData.entries.slice(0, 3).forEach((entry, index) => {
        console.log(`\n【${index + 1}】${entry.API}`);
        console.log('描述:', entry.Description);
        console.log('链接:', entry.Link);
      });
    } catch (error) {
      console.error('解析失败:', error.message);
    }
  });
}).on('error', (err) => {
  console.error('请求出错:', err.message);
});

步骤 4:运行看看!

在终端输入:

node crawler.js

你会看到类似输出:

共找到 12 个书籍相关 API

【1】Google Books
描述: Search and access book information
链接: https://developers.google.com/books/

【2】Open Library
描述: Access to millions of books
链接: https://openlibrary.org/developers/api

...

🎉 恭喜!你刚刚完成了一个真实的“数据抓取”任务!


升级:把结果保存到文件,方便求职展示

光打印不够酷。我们把它存成 books.csv,这样你可以附在简历里说:“我用 JS 自动采集并整理了技术书籍资源”。

修改 crawler.js,在 response.on('end') 里加一段:

// ... 解析 jsonData 后

// 构建 CSV 内容
let csvContent = '书名,描述,链接\n';
jsonData.entries.slice(0, 5).forEach(entry => {
  // 处理逗号和换行(简单处理)
  const name = `"${entry.API.replace(/"/g, '""')}"`;
  const desc = `"${entry.Description.replace(/"/g, '""')}"`;
  csvContent += `${name},${desc},${entry.Link}\n`;
});

// 写入文件
const fs = require('fs');
fs.writeFile('books.csv', csvContent, (err) => {
  if (err) {
    console.error('保存失败:', err);
  } else {
    console.log('\n✅ 数据已保存到 books.csv!');
  }
});

再运行一次,你会发现项目目录多了一个 books.csv 文件,用 Excel 打开就能看到整齐的表格!


新手常见问题解答

问题 原因 解决方案
Error: connect ECONNREFUSED 网络不通或 URL 错误 检查网址是否能浏览器打开;确认是否需要代理
JSON.parse failed 返回的不是 JSON console.log(data) 先看原始内容
抓不到淘宝/招聘网站数据 网站有反爬机制 初期避开这类网站,用公开 API 练手
代码不执行,没报错也没输出 忘记运行 node 文件名 确保在终端正确执行命令

🔍 避坑指南:永远不要一上来就抓大厂网站!先用 https://httpbin.org/get 这种测试接口验证你的代码逻辑。


学习路径建议:从爬虫走向求职竞争力

你已经迈出了关键一步。接下来,我建议你按这个路线深化:

  1. 巩固 JavaScript 基础

    • 重点掌握:变量、函数、数组方法(map, filter)、异步(async/await
    • 推荐书籍:《JavaScript 高级程序设计》(红宝书)第4版,前6章足够入门
  2. 尝试更真实的爬虫

    • axios 替代原生 https(更简洁)
    • 学会用 cheerio 解析 HTML(像 jQuery 一样操作网页结构)
    const axios = require('axios');
    const cheerio = require('cheerio');
    
    const { data } = await axios.get('https://example.com');
    const $ = cheerio.load(data);
    const title = $('h1').text(); // 提取标题
    
  3. 构建完整项目

    • 抓取某招聘网站的“JavaScript 岗位”列表
    • 统计高频技能词(如 React, Vue, Node.js)
    • 生成可视化报告(用 chart.js 或导出 Excel)
  4. 写进简历

    • 项目名称:“基于 Node.js 的招聘信息分析工具”
    • 技术栈:JavaScript, Axios, Cheerio, CSV 生成
    • 成果:帮助识别市场热门技能,提升求职针对性

最后的话

我当初学的时候,也是从一行 console.log('Hello World') 开始的。技术探索不怕慢,就怕不动手。今天这个小爬虫,看似简单,但它包含了网络请求、数据解析、文件操作三大核心能力——这正是企业看重的“工程思维”。

记住:求职不是比谁背的理论多,而是比谁能用技术解决实际问题。你抓取的每一行数据,都在为你的简历增加一份真实力。

现在,打开你的 VS Code,把 crawler.js 跑起来吧。我在开源社区等你提交第一个 PR!

🌱 延伸行动建议

  • 把代码上传到 GitHub,起名叫 job-hunting-crawler
  • 在 README 里写下你的学习心得
  • 关注 public-apis/public-apis 仓库,发现更多免费数据源

技术之路,始于足下。你,已经出发了。

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝