Python大语言模型实战-记录一次用MetaGPT框架实现爬虫任务的完整过程

1、模型选择GPT4

2、需求:在win10操作系统环境下,基于python3.10解释器,爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,并将爬取的信息写入Excel表中。

3、结果

它大致理解了我的需求,生成了一个名为douban_scraper的项目文件夹

图片

其中主体程序文件在douban_scraper子文件夹中:

图片

在自己手动安装依赖库之后,尝试直接运行,发现仍然出现中文乱码情况

图片

经过人工修改,程序最终能运行,但是未能爬取到最终的结果

图片

4、原因分析

首先发现request返回的状态码是418,思考了一下,应该是生成的代码没有请求头,对此,我手动添加了一下,状态码返回了200。然后运行程序报错:

图片

这肯定是bs4解析代码存在问题,生成的解析网页的代码段如下,红色方框中为报错的行:

图片

查看网页元素代码

图片

这表明,生成的代码都是盲写,与实际的情况无法验证是否一致,改为采用正则表达的方法对评价人数这个字段进行提取

review_count = re.findall(re.compile(r'<span>(\d*)人评价</span>'), str(movie_element))[0]

最终程序运行成功

图片

虽然代码运行成功了,但是并没有完全达到我的需求,我的需求是爬取豆瓣电影Top250的相关信息,而生成的代码只爬取了第一页,对此,我对main函数的base_url进行修改,改为:

base_url = "https://movie.douban.com/top250?start="

并加入循环,依次读取每一页

图片

接着又报错了

图片

原来是由于这个电影的年份出现了(中国大陆),应该是解析出现了问题,

图片

生成代码是这样的,这里代码的逻辑是取列表的一个元素为年份,第二个元素为地区,第三个元素为类型,但是对于第54个电影,第一个元素,第二个元素、第三个元素都是1961(中国大陆),属于字符串型,且后面提取出来的元素也会出错。

图片

为此,我们对代码加入异常处理,并对代码进行优化:

图片

最终程序运行成功,需求得到了满足。

图片

5、总结

    基于大语言模型的软件开发多智能体框架MetaGPT,并不可靠。GPT4的理解能力和代码审查能力明显要优于GPT3.5,但是对于一个简单的爬虫任务,MetaGPT也无法实现一步到位就能直接运行得到用户想要的结果。

    主要原因有以下几点:

    (1)首先对于MetaGPT生成的软件项目在本地运行如果本地缺少项目中需要的一些依赖项,则需要自己安装依赖库,这就可能导致版本的兼容问题。

    (2)其次,程序中的一些参数设置需要人工配置,比如发出网页请求,需要加入请求头部信息,否则无法返回网页信息,也就无法解析内容返回结果,而请求头信息是需要用户提供的。

    (3)还有,MetaGPT属于盲写代码,生成的代码是通用的情况,而实际运行过程会出现很多特殊的情况,导致程序报错,哪怕程序虽然不会报错,也有可能不会达到用户的需求,当前只能起到辅助提高效率,人需要程序员进行不断地调式。

    (4)用户提出需求之后,无法参与到软件开发的过程中,无法参与反馈。

    总之,提示和模型的性能对结果影响很大。MetaGPT编码的规范性很强,也有一定的逻辑,但是对于涉及到人工干预的任务,或者遇到一些情况特殊的任务,往往达不到预期。

本人读研期间发表5篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,对Python有一定认知和理解,会结合自身科研实践经历不定期分享关于python、机器学习、深度学习等基础知识与应用案例。

致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

1、邀请三个朋友关注本订阅号或2、分享/在看任意订阅号的三篇文章即可在后台联系我获取相关数据集和源码。

2、关注“数据杂坛”公众号,点击“领资料”即可免费领取资料书籍。

3、如果对本文有疑问,或者有论文指导的相关需求,点击“联系我”添加作者微信直接交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/211130.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2023-11-23】生成A~Z编号

生成A~Z编号 需要生成 A~Z的编号&#xff0c;当新的编号超过Z时&#xff0c;从A1开始&#xff0c;依次为B1 C1一直至Z1,如此循环。 最大支持字母为Z&#xff0c;超过后以添加数字后缀的形式标记 简单代码 默认从A开始循环 function getLimitNumber(_total) {var num 0var …

数据提取PDF SDK的对比推荐

PDF 已迅速成为跨各种平台共享和分发文档的首选格式&#xff0c;它作为一种数据来源&#xff0c;常见于公司的各种报告和报表中。为了能更好地分析、处理这些数据信息&#xff0c;我们需要检测和提取 PDF 中的数据&#xff0c;并将其转换为可用且有意义的格式。而数据提取的 PD…

一文聊聊近些年 CPU 在微架构、IO 速率上的演进过程

在上一篇《一文深入了解 CPU 的型号、代际架构与微架构》 中我们介绍了我手头的一颗 Intel(R) Core(TM) i5 的型号规则&#xff0c;以及它的物理硬件的 Die 图结构。以及它对应的 Skylake 核的微架构实现。 不少同学开始问我其它型号的 CPU 和它比有什么区别呢。考虑到了市场上…

24路电磁锁控板的特点和主要参数

智能快递柜、智能生鲜柜、电子存储柜、超市寄存柜、智能送餐柜、电子更衣柜、档案柜等物联网终端设备&#xff0c;都是采用电磁锁控制&#xff0c;这种电磁锁控制板俗称锁控板。锁控板可以远程控制储物柜的开关以及远程监控并提供锁的反馈信号。沐渥开发的24路电磁锁控板可以控…

项目管理套路:看这一篇绝对够用❤️

写论文必不可少的&#xff0c;就是创建代码并进行实验。好的项目管理可以让实验进行得更加顺利。本篇博客以一次项目实践为例&#xff0c;介绍项目管理的方法&#xff0c;以及可能遇到的问题&#xff0c;并提供一些可行的解决方案。 目录 项目管理工具开始第一步版本管理十分关…

实战JVM高CPU、内存问题分析定位

背景&#xff1a; 业务中台组件MOSC开展压测工作&#xff0c;并发场景下发现CPU使用率达到100%&#xff0c;虽然程序没有报错&#xff0c;但是这种情况显然已经达到性能瓶颈&#xff0c;对服务带来了验证的效能影响&#xff0c;所以针对该CPU问题必须进行详细的根因分析处理。…

redis实现分布式锁

实现分布式锁时需要实现的两个基本方法&#xff1a; 获取锁&#xff1a; 互斥&#xff1a;确保只能有一个线程获取锁非阻塞&#xff1a;尝试一次&#xff0c;成功返回true&#xff0c;失败返回false 释放锁&#xff1a; 手动释放超时释放&#xff1a;获取锁时添加一个超时时间…

unordered_map 与 unordered_set 的使用

unordered_map unordered_map 的介绍文档 unordered_map 的介绍文档&#xff1a;来自cpluscplus.com 的中文翻译 unordered_map是存储<key, value>键值对的关联式容器&#xff0c;其允许通过keys快速的索引到与 其对应的value。在unordered_map中&#xff0c;键值通常用…

OpenWRT软路由web界面如何远程访问

文章目录 1.openWRT安装cpolar2.配置远程访问地址3.固定公网地址 简单几步实现在公网环境下远程访问openWRT web 管理界面&#xff0c;使用cpolar内网穿透创建安全隧道映射openWRT web 界面面板443端口&#xff0c;无需公网IP&#xff0c;无需设置路由器。 1.openWRT安装cpola…

解决:前端js下载文件流出现“未知文件格式”错误

第一中情况&#xff1a; 出现的问题&#xff0c;前端已经设置了responseType: blob,下载下来还是格式不对。 最后经过排查&#xff0c;后端缺少charsetutf-8&#xff0c;所以前端可以设置编码&#xff1a; 第二中情况&#xff1a; 后端已经设置了charsetutf-8&#xff0c;前…

【Java】认识String类

文章目录 一、String类的重要性二、String类中的常用方法1.字符串构造2.String对象的比较3.字符串查找4.转换5.字符串替换6.字符串拆分7.字符串截取8.其他操作方法9.字符串的不可变性10.字符串修改 三、StringBuilder和StringBuffer 一、String类的重要性 在C语言中已经涉及到…

leetcode (力扣) 97. 交错字符串(动态规划)

文章目录 题目描述思路分析完整代码 题目描述 给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串&#xff1a; s s1 s2 … sn t …