(1)promt提示词工程开发
AI也可以协助爬虫吗? 答案是可以的,使用cursor平台,搭配vscode进行。使用到promot提示词开发,可以看看上面两段相关文章进行深入学习。下面介绍如何安装并且配置cursor.so代码环境,并且使用cursor.so进行新浪微博首页面的简单爬取,对比传统爬虫
Cursor是什么?
Cursor.so 是一个集成了 GPT-4 的国内直接可以访问的,优秀而强大的免费代码生成器,可以帮助你快速编写、编辑和讨论代码。
它支持多种编程语言,如 Python, Java, C#, JavaScript 等,并且可以根据你的输入和需求自动生成代码片段。
Cursor.so 还可以帮助你重构、理解和优化代码,提高开发效率。
强烈建议程序员们都要安装使用,将带来革命性的编码效率提升。
下面先进行环境配置
- 先下载cursor并且注册,推荐使用github进行注册并且登入
官网网址:www.cursor.so/
-
第二步,让cursor连接vscode,进入
-
最后,在右上角 setting (window系统下,Mac下在左上角)点击进入
- 进入setting后
- 其他付费openai取消,add model ,输入:
Qwen/Qwen2.5-Coder-32B-Instruct
,回车 - 然后你可以看到新的模型加入,并且是开启状态。
- 在SiliconCloud里面找自己的Key,输入到第三步那
- 第四部分那输入:
https://api.siliconflow.cn/v1
- 第五步,打开
最后结果:
正片开始了
我们的工作页面
可以选择一个文件进行,也可以直接输入promt,让系统自动帮我们生成文件
promt工程
请帮我编写一个Node程序,去爬取微博的热榜。
#要求:
- 使用request-promise 和 cheerio
- 目标网站: @tophub.today/n/KqndgxeLl…
- 爬取表格中热榜的排名、标题、热度、链接,并保存到csv文件中
- 请一步步思考,你可以打开目标网站分析其网页结构,并编写代码。
很简单,放到chat对话款里面: 就能进行代码开发,那我不是不用干活了?不一定哦,生成的东西还是有bug的,还需要调试
下面就对代码进行分析,这样好修改代码:
// 爬虫 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:不要乱爬网站)