0基础来玩玩cursor+爬虫---我看 “刑”---保姆教学

405 阅读5分钟

前言

在数字化时代,数据成为了新的石油。而获取和处理这些宝贵的数据资源,则需要一系列强大的工具和技术。今天我们来0基础,只要会使用AI+cursor,直接实现爬虫爬取数据。

一、入门爬虫技术

首先,我们要谈谈网络爬虫——一种自动浏览网页并收集信息的程序。对于希望从互联网上提取有价值信息的人来说,学会编写爬虫是非常重要的技能之一。通过AI+cursor设置合适的prompt、等方式,即使是完全的新手也能快速上手制作出自己的第一个爬虫。

二、什么是Cursor?

紧接着,让我们解释一下Cursor的概念。Cursor - The AI Code Editor 是一个由GitHub推出的人工智能辅助代码编辑器。它旨在通过AI技术来帮助开发者提高编码效率,减少编写代码时的重复劳动。Cursor集成了多种功能,比如自动补全、代码建议、快速修复错误等,这些功能都是基于机器学习模型提供的,能够根据上下文理解提供更加准确和个性化的建议。

应用安装:

cursor官网:Cursor - The AI Code Editor

image.png

Cursor - The AI Code Editor并不是一个独立的应用程序,而是一个基于Visual Studio Code的应用。 在注册好账号之后,我们就可以来使用里面的大模型了(有些是需要收费的)

环境配置:

1.进入setting

屏幕截图 2024-12-02 102904.png 2.进入models

  • 先将其他大模型都关闭

屏幕截图 2024-12-02 103227.png

  • 点击Add model 添加千问大模型,新用户有很多使用机会。
    • 输入 Qwen/Qwen2.5-Coder-32B-Instruct
    • 再输入属于你自己的API key 吧,Base URL 填下面的网址。

image.png

屏幕截图 2024-12-02 103818.png

环境配好之后我们就准备来启动我们的项目了哦!

三、项目实战

我们来试试爬取微博热榜的数据,如果从头学起肯定要一时半会,但是现在我们有了AI,可以快速上手,

准备一个prompt

请帮我编写一个Node程序,去爬取微博的热榜。
#要求:
1:使用request-promise 和 cheerio
2:目标网站:
@tophub.today/n/KqndgxeLl…
3.爬取表格中热榜的排名、标题、热度、链接、并保持到csv文件中
请一步步思考,你可以打开目标网站分析其网页结构,并编写代码。

image.png

根据AI的提示我们依次去点击run就行了:

  1. 创建文件夹并且项目初始化
 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);
  });
  1. 得到结果:

image.png

如果你没有成功,可能是AI功力不够强大,需要稍微的修改,就像我第一次试的时候,我的CSV文件中就没有数据,虽然程序跑起来了。

怎么样有了AI是不是很简单就爬取了你想要的数据呢?可不要乱爬别的噢!

AI虽好,但是我们需要去理解代码的原理!

  1. 引入必要的模块
const request = require('request-promise');
const cheerio = require('cheerio');
const fs = require('fs');

  • request-promise:用于发送HTTP请求。
  • cheerio:用于解析HTML文档。
  • fs:Node.js内置模块,用于文件系统操作。
  1. 定义目标URL
  • const url = 'https://tophub.today/n/KqndgxeLl9'; 指定要抓取数据的网页地址。
  1. 发送HTTP请求并获取HTML内容
  • request(url) 发送GET请求到指定URL。
  • .then(html => { ... }) 当请求成功时执行回调函数,参数html是响应的HTML内容。
  • .catch(err => { ... }) 如果请求失败,则捕获错误并打印错误信息。
  1. 使用cheerio加载HTML
  • const $ = cheerio.load(html); 使用cheerio将HTML字符串转换成可查询的对象。
  1. 定义一个数组来存储热榜数据
  • const hotList = []; 用来存放抓取到的数据项。
  1. 遍历表格中的每一行
  • $('.jc table tr').each((index, element) => { ... }); 选择所有类名为.jc下的table元素中的tr(表格行),然后对每行进行迭代处理。
  • if (index === 0) return; 跳过表头行,因为表头通常不包含实际数据。
  1. 获取排名、标题、热度和链接
  • 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。
  1. 将数据添加到数组中
  • hotList.push({ rank, title, heat, link }); 将提取的信息以对象形式加入到hotList数组里。
  1. 将数据写入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中。
  1. 输出成功信息
  • console.log('数据已成功保存到 weibo_hotlist.csv'); 在控制台输出一条消息表示操作完成。
  1. 错误处理
  • console.error('请求失败:', err); 如果请求过程中发生任何错误,将在控制台显示错误信息。

四、Cursor

Cursor代表了未来编程工具的一个重要方向,学会怎么去使用它,是作为程序员的必经之路。