前言
在数字化时代,数据成为了新的石油。而获取和处理这些宝贵的数据资源,则需要一系列强大的工具和技术。今天我们来0基础,只要会使用AI+cursor,直接实现爬虫爬取数据。
一、入门爬虫技术
首先,我们要谈谈网络爬虫——一种自动浏览网页并收集信息的程序。对于希望从互联网上提取有价值信息的人来说,学会编写爬虫是非常重要的技能之一。通过AI+cursor设置合适的prompt、等方式,即使是完全的新手也能快速上手制作出自己的第一个爬虫。
二、什么是Cursor?
紧接着,让我们解释一下Cursor的概念。Cursor - The AI Code Editor 是一个由GitHub推出的人工智能辅助代码编辑器。它旨在通过AI技术来帮助开发者提高编码效率,减少编写代码时的重复劳动。Cursor集成了多种功能,比如自动补全、代码建议、快速修复错误等,这些功能都是基于机器学习模型提供的,能够根据上下文理解提供更加准确和个性化的建议。
应用安装:
cursor官网:Cursor - The AI Code Editor
Cursor - The AI Code Editor并不是一个独立的应用程序,而是一个基于Visual Studio Code的应用。 在注册好账号之后,我们就可以来使用里面的大模型了(有些是需要收费的)
环境配置:
1.进入setting
2.进入models
- 先将其他大模型都关闭
- 点击Add model 添加千问大模型,新用户有很多使用机会。
- 输入 Qwen/Qwen2.5-Coder-32B-Instruct
- 再输入属于你自己的API key 吧,Base URL 填下面的网址。
- 这里找到你的key SiliconCloud
环境配好之后我们就准备来启动我们的项目了哦!
三、项目实战
我们来试试爬取微博热榜的数据,如果从头学起肯定要一时半会,但是现在我们有了AI,可以快速上手,
准备一个prompt
请帮我编写一个Node程序,去爬取微博的热榜。
#要求:
1:使用request-promise 和 cheerio
2:目标网站:
@tophub.today/n/KqndgxeLl…
3.爬取表格中热榜的排名、标题、热度、链接、并保持到csv文件中
请一步步思考,你可以打开目标网站分析其网页结构,并编写代码。
根据AI的提示我们依次去点击run就行了:
- 创建文件夹并且项目初始化
mkdir weibo-hotlist-scraper
cd weibo-hotlist-scraper
npm init -y
然后安装相应的依赖
npm install request-promise cheerio fs
2. 编写爬虫代码,在请在weibo-hotlist-scraper 中创建一个mian.js,可以复制AI给的代码,也可以复制我的。
const request = require('request-promise');
const cheerio = require('cheerio');
const fs = require('fs');
// 目标URL
const url = 'https://tophub.today/n/KqndgxeLl9';
// 发送HTTP请求并获取HTML内容
request(url)
.then(html => {
// 使用cheerio加载HTML
const $ = cheerio.load(html);
// 定义一个数组来存储热榜数据
const hotList = [];
// 遍历表格中的每一行
$('.jc table tr').each((index, element) => {
// 跳过表头行
if (index === 0) return;
// 获取排名、标题、热度、链接
const rank = $(element).find('td:nth-child(1)').text().trim();
const title = $(element).find('td:nth-child(2) a').text().trim();
const heat = $(element).find('td:nth-child(3)').text().trim();
const link = 'https://tophub.today' + $(element).find('td:nth-child(2) a').attr('href');
// 将数据添加到数组中
hotList.push({ rank, title, heat, link });
});
// 将数据写入CSV文件
const csv = hotList.map(item => `${item.rank},${item.title},${item.heat},${item.link}`).join('\n');
fs.writeFileSync('weibo_hotlist.csv', csv, 'utf8');
console.log('数据已成功保存到 weibo_hotlist.csv');
})
.catch(err => {
console.error('请求失败:', err);
});
- 得到结果:
如果你没有成功,可能是AI功力不够强大,需要稍微的修改,就像我第一次试的时候,我的CSV文件中就没有数据,虽然程序跑起来了。
怎么样有了AI是不是很简单就爬取了你想要的数据呢?可不要乱爬别的噢!
AI虽好,但是我们需要去理解代码的原理!
- 引入必要的模块
const request = require('request-promise');
const cheerio = require('cheerio');
const fs = require('fs');
request-promise:用于发送HTTP请求。cheerio:用于解析HTML文档。fs:Node.js内置模块,用于文件系统操作。
- 定义目标URL:
const url = 'https://tophub.today/n/KqndgxeLl9';指定要抓取数据的网页地址。
- 发送HTTP请求并获取HTML内容:
request(url)发送GET请求到指定URL。.then(html => { ... })当请求成功时执行回调函数,参数html是响应的HTML内容。.catch(err => { ... })如果请求失败,则捕获错误并打印错误信息。
- 使用cheerio加载HTML:
const $ = cheerio.load(html);使用cheerio将HTML字符串转换成可查询的对象。
- 定义一个数组来存储热榜数据:
const hotList = [];用来存放抓取到的数据项。
- 遍历表格中的每一行:
$('.jc table tr').each((index, element) => { ... });选择所有类名为.jc下的table元素中的tr(表格行),然后对每行进行迭代处理。if (index === 0) return;跳过表头行,因为表头通常不包含实际数据。
- 获取排名、标题、热度和链接:
const rank = $(element).find('td:nth-child(1)').text().trim();获取第一列(排名)的内容。const title = $(element).find('td:nth-child(2) a').text().trim();获取第二列(标题)中a标签的文字内容。const heat = $(element).find('td:nth-child(3)').text().trim();获取第三列(热度)的内容。const link = 'https://tophub.today' + $(element).find('td:nth-child(2) a').attr('href');获取第二列中a标签的href属性值,并拼接完整的URL。
- 将数据添加到数组中:
hotList.push({ rank, title, heat, link });将提取的信息以对象形式加入到hotList数组里。
- 将数据写入CSV文件:
const csv = hotList.map(item =>item.rank,item.rank,{item.title},item.heat,item.heat,{item.link}).join('\n');将数组中的每个对象转换为逗号分隔的字符串,并用换行符连接起来形成最终的CSV格式字符串。fs.writeFileSync('weibo_hotlist.csv', csv, 'utf8');使用同步方法将生成的CSV字符串写入到本地文件weibo_hotlist.csv中。
- 输出成功信息:
console.log('数据已成功保存到 weibo_hotlist.csv');在控制台输出一条消息表示操作完成。
- 错误处理:
console.error('请求失败:', err);如果请求过程中发生任何错误,将在控制台显示错误信息。
四、Cursor
Cursor代表了未来编程工具的一个重要方向,学会怎么去使用它,是作为程序员的必经之路。