老板要我爬虫,我用Cursor快速AI辅助搞定

717 阅读5分钟

(1)promt提示词工程开发

(2)AI出海:AI高效处理出海业务

AI也可以协助爬虫吗? 答案是可以的,使用cursor平台,搭配vscode进行。使用到promot提示词开发,可以看看上面两段相关文章进行深入学习。下面介绍如何安装并且配置cursor.so代码环境,并且使用cursor.so进行新浪微博首页面的简单爬取,对比传统爬虫

Cursor是什么?

Cursor.so 是一个集成了 GPT-4 的国内直接可以访问的,优秀而强大的免费代码生成器,可以帮助你快速编写、编辑和讨论代码。
它支持多种编程语言,如 Python, Java, C#, JavaScript 等,并且可以根据你的输入和需求自动生成代码片段。
Cursor.so 还可以帮助你重构、理解和优化代码,提高开发效率。

强烈建议程序员们都要安装使用,将带来革命性的编码效率提升。

下面先进行环境配置

  • 先下载cursor并且注册,推荐使用github进行注册并且登入

官网网址:www.cursor.so/

image.png

  • 第二步,让cursor连接vscode,进入

  • 最后,在右上角 setting (window系统下,Mac下在左上角)点击进入

e8829e7a322e26c6e25b541720d8a301.png

  • 进入setting后
  1. 其他付费openai取消,add model ,输入:Qwen/Qwen2.5-Coder-32B-Instruct ,回车
  2. 然后你可以看到新的模型加入,并且是开启状态。
  3. 在SiliconCloud里面找自己的Key,输入到第三步那
image.png
  1. 第四部分那输入: https://api.siliconflow.cn/v1
  2. 第五步,打开

最后结果:

1.png

正片开始了

我们的工作页面

image.png

可以选择一个文件进行,也可以直接输入promt,让系统自动帮我们生成文件

promt工程

请帮我编写一个Node程序,去爬取微博的热榜。
#要求:

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

很简单,放到chat对话款里面: 就能进行代码开发,那我不是不用干活了?不一定哦,生成的东西还是有bug的,还需要调试

image.png 下面就对代码进行分析,这样好修改代码:

// 爬虫 request-promise 负责发生请求
// node 早期 commonjs 模块化
const request = require('request-promise')
// cheerio 解析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)
   .then(html => {
        // cheerio解析HTML 得到热搜数据,
        // 内存模拟浏览器,load 加载HTML字符串 
        const $ = cheerio.load(html)
        const hotSearchList = [];
        // 遍历热搜列表 子选择器
        $('.jc table tr').each((index,element) => {
            // console.log(index,element);
            // ${node}.find(querySelector) 选择器  .text() 获取文本 .trim() 去除空白字符
            const title = 
            // 第2个td
            $(element).find('td:nth-child(2)').text().trim();
            const head = 
            $(element).find('td:nth-child(3)').text().trim();
            // 第2个td 的a标签,href 属性
            const link = 
            $(element).find('td:nth-child(2) a').attr('href').trim();
            hotSearchList.push({
                rank:index + 1,title,head,link
            })
            // console.log(title);
        })
        // 写入csv ,启动
        const cssWriter  = createCsvWriter({
            path:'./hotSearch.csv',
            header:[
                {id:'rank',title:'排名'},
                {id:'title',title:'标题'},
                {id:'head',title:'热度'},
                {id:'link',title:'链接'}
            ],

        })
        cssWriter
                .writeRecords(hotSearchList)
                .then(() => console.log('写入完成') )
                .catch(err => console.log(err))
        
   })

逐一讲解

1. 模块导入

在Node.js环境中,首先需要导入所需的模块。这些模块将帮助我们发送HTTP请求、解析HTML以及创建和写入CSV文件。

const request = require('request-promise');
const cheerio = require('cheerio');
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
  • request-promise:这是一个基于Promise的HTTP客户端库,简化了异步操作,允许我们使用.then().catch()处理响应。
  • cheerio:一个轻量级的库,用于解析HTML文档,提供类似jQuery的API来选择和操作DOM元素。
  • csv-writer:用于创建和写入CSV文件的库,createObjectCsvWriter方法用来定义CSV文件的结构和内容。

2. 配置项

定义要抓取的网页URL。

const HOT_URL = 'https://tophub.today/n/KqndgxeLl9';
  • HOT_URL:目标网页的URL,指向一个热门话题页面。

3. 发送HTTP请求并处理响应

使用request-promise发送GET请求,并处理返回的HTML内容。

request(HOT_URL)
   .then(html => {
       // 处理HTML内容...
   })
   .catch(err => console.error(err));
  • request(HOT_URL) :发送GET请求到指定的URL。
  • .then(html => { ... }) :处理成功的响应,html是返回的HTML字符串。
  • .catch(err => console.error(err)) :捕捉请求过程中可能出现的错误,并打印到控制台。

4. 解析HTML

使用cheerio加载HTML字符串,并提取所需的数据。

       // cheerio解析HTML 得到热搜数据,
        // 内存模拟浏览器,load 加载HTML字符串 
        const $ = cheerio.load(html)
        const hotSearchList = [];
        // 遍历热搜列表 子选择器
        $('.jc table tr').each((index,element) => {
            const title = 
            // 第2个td
            $(element).find('td:nth-child(2)').text().trim();
            const head = 
            $(element).find('td:nth-child(3)').text().trim();
            // 第2个td 的a标签,href 属性
            const link = 
            $(element).find('td:nth-child(2) a').attr('href').trim();
            hotSearchList.push({
                rank:index + 1,title,head,link
            })
        })
  • cheerio.load(html) :加载HTML字符串,返回一个类似于jQuery的对象$,可以用来选择和操作DOM元素。
  • $('.jc table tr') :选择所有匹配的选择器(这里是所有的表格行tr)。
  • .each((index, element) => { ... }) :遍历所有匹配的元素。
  • ${node}.find(querySelector) 选择器 .text() 获取文本 .trim() 去除空白字符
  • $(element).find('td:nth-child(2) a').attr('href').trim() :从第二列中的链接中获取href属性作为链接地址,并去除空白字符。
  • hotSearchList.push({rank: index + 1, title, head, link}) :将提取的信息构建成对象,并添加到hotSearchList数组中。

5. 写入CSV文件

使用csv-writer将提取的数据写入CSV文件。

const csvWriter = createCsvWriter({
    path: './hotSearch.csv',
    header: [
        {id: 'rank', title: '排名'},
        {id: 'title', title: '标题'},
        {id: 'head', title: '热度'},
        {id: 'link', title: '链接'}
    ]
});

csvWriter.writeRecords(hotSearchList)
    .then(() => console.log('写入完成'))
    .catch(err => console.log(err));
  • createCsvWriter:创建一个CSV写入器,指定输出文件路径和CSV的表头信息。
  • csvWriter.writeRecords(hotSearchList) :将hotSearchList中的数据写入CSV文件。
  • .then(() => console.log('写入完成')) :处理写入操作成功的情况,打印“写入完成”。
  • .catch(err => console.log(err)) :捕捉写入过程中可能出现的错误,并打印到控制台。

以上是使用cursor.so进行高效代码开发,使用爬虫进行实例讲解。学习了,不要忘了收藏点个赞再走哦~~ (小声bb:不要乱爬网站)