引言
我们先来介绍cursor这一改变时代的神器。 cursor是一个集成了各种先进LLM的类vscode的编译器,也可以理解为在vscode中集成了AI辅助编程助手。cursor已经在各个公司中得到了广泛的应用,在它的帮助下,编码效率能够大幅度提升。今天,我们就来零基础使用cursor,完全用AI( 本例中使用 Qwen/Qwen2.5-Coder-32B-Instruct )实现一个网页爬虫,爬取微博的热榜。
准备工作
- 下载cursor并注册: Cursor - The AI Code Editor
- 保证拥有Node.js环境,如果没有可到官网下载:Node.js — 在任何地方运行 JavaScript
- 我们将使用Qwen/Qwen2.5-Coder-32B-Instruct模型,去代理申请一个密钥SiliconCloud
- 在cursor的设置中,添加Qwen/Qwen2.5-Coder-32B-Instruct模型,并关闭其他模型。修改OpenAI API Key板块中的代理地址为api.siliconflow.cn/v1 ,添加刚刚获得的API 密钥,保存添加。
- 创建一个文件夹,并在终端把它设置为后端项目:
npm init -y //初始化一个后端项目
准备工作已经完成了,接下来让我们正式开始。
使用cursor完成代码
先明确要干什么: 我们要爬取微博热榜,拿到相应的标题、热度和链接,保存到csv文件中。
爬取目标网站:tophub.today/n/KqndgxeLl…
根据需求,创建prompt(提示词) prompt要尽量详细,分步骤,让LLM减少错误。在这里我给出我的prompt,你们也可以根据需求完善提出你们自己的prompt。
如果想要进一步了解prompt,请移步零基础LLM+Prompt:原来Prompt要这么用
请帮我编写一个Node程序,去爬取微博的热榜。
#要求:
1.使用request-promise 和 cheerio
2.目标网站: @<https://tophub.today/n/KqndgxeLl9>
3.爬取表格中热榜的排名、标题、热度、链接,并保存到csv文件中
请一步步思考,你可以打开目标网站分析其网页结构,并编写代码。
使用cursor右上角设置左边的Toggle AI Pane的chat模式
根据AI提供的步骤来完成爬取微博热榜的任务,如果按照AI的方法没有完成的话,可以多提问几次,不断向AI提出所出现的问题,让它进一步修改代码来完成。如果还是没有完成,可以参考我的例子来进行下面的内容。
下面是AI为我提供的步骤:
- 安装后面所需要的依赖:request-promise(发送请求,拿到html字符串)、cheerio(解析html字符串)、csv-writer(生成csv文件)
npm install request-promise cheerio csv-writer
- 编写代码,创建一个js文件
// request-promise 负责发送请求
// import request from ''; es6写法
// es6之前 node 早期的 commonjs 模块化
const request = require('request-promise');
// 解析 request 拿到的html 字符串
const cheerio = require('cheerio');
// 创建一个对象形式的CSV写入器
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
// 常量 全部大写 配置项
// 要爬的微博热榜网站
const HOT_URL = 'https://tophub.today/n/KqndgxeLl9';
// network http 请求
request(HOT_URL)
// http请求完成后
.then(html => {
// 请求完成了
// console.log(html);
// 解析 html 得到热榜
// html 字符串 -> tr
// 内存里模拟浏览器 cheerio 解析 html
const $ = cheerio.load(html);
const hotList = [];
// 该网页中为 tr
// cheerio 提供的each循环
// 查看要爬的网页,可以看到要爬的数据都在 table tr td 中
$('.jc table tr').each((index, element) => {
// console.log(index, element);
// 进入 tr 中拿 td
// 模板: $(node).find(querySelector)
// 排序
const rank =
$(element).find('td:nth-child(1)').text().trim()
// 标题
const title =
$(element).find('td:nth-child(2)').text().trim() //text 文字部分 trim 去掉空格
// 热度
const heat =
$(element).find('td:nth-child(3)').text().trim()
// 链接
const link =
$(element).find('td:nth-child(2) a').attr('href').trim();
// 把上面的内容全部存到hotList中
hotList.push({
rank,
title,
heat,
link,
})
})
// 创建csv写入器
const csvWriter = createCsvWriter({
path: 'hot_list2.csv', //存入的csv文件名
header: [ //定义表头字段
{ id: 'rank', title: '排序' }, //第一列
{ id: 'title', title: '标题' }, //第二列
{ id: 'heat', title: '热度' }, //第三列
{ id: 'link', title: '链接' }, //第四列
],
})
csvWriter
.writeRecords(hotList) // 将hotList写入csv文件中
// 写入完成后,打印保存成功提示信息
.then(() => console.log('CSV file has been saved.'))
})
好了,现在来执行js文件,看看结果是否保存到了csv文件中
至此,我们通过cursor已经成功完成了一个爬虫。我们并不完全了解爬虫,没有编写一句代码,这在cursor之前是不敢想象的。
结语
Cursor不仅仅是一个工具,它代表了未来编程的趋势。随着AI技术的不断发展,这样的辅助工具将变得越来越智能,能够处理更复杂的问题,提供更个性化的支持。各大公司已经开始广泛应用这类工具,以提高生产力和创新能力。
对于开发者来说,掌握这些新兴的技术和工具是至关重要的。它们不仅能帮助你更快地完成项目,还能让你有更多时间专注于创新和解决问题的核心部分。Cursor的出现标志着一个新时代的到来,在这个时代里,每个人都可以成为高效的开发者,无论你的水平如何。