爬虫,传统编程与提示词工程的碰撞理解

1,495 阅读9分钟

背景:随着人工智能(AI)技术的发展,特别是自然语言处理(NLP)和大型语言模型(LLM)的兴起,提示词工程(Prompt Engineering)成为了一个新的热点。提示词工程专注于如何有效地构造和优化指令或提示,以引导AI模型完成特定任务,包括但不限于文本生成、问答、代码编写等。在爬虫技术领域,AI背景下的提示词工程带来了全新的碰撞和融合。

 

正文:本文用豆瓣电影( movie.douban.com/chart )作为目标URL来讲解传统编程与AIGC时代背景下的爬虫的迭代。

传统编程对于数据的爬取

在讲解传统爬虫之前,先介绍一个最近兴起的一个node.js中的爬虫库x-crawl 

关于x-crawl的 特征

· 异步同步 - 只需更改一下 mode 属性值即可切换异步或同步爬取模式。

· 多种功能 - 可爬页面、爬接口、爬文件以及轮询爬,并且支持爬取单个或多个。

· 写法灵活 - 简单目标配置、详细目标配置、混合目标数组配置以及进阶配置,同种爬取 API 适配多种配置。

· 设备指纹 - 零配置或自定义配置,即可避免通过指纹识别从不同位置识别并跟踪我们。

· 间隔爬取 - 无间隔、固定间隔以及随机间隔,即可产生或避免高并发爬取。

· 失败重试 - 全局设置、局部设置以及单独设置, 即可避免因一时问题而造成爬取失败。

· 优先队列 - 根据单个爬取目标的优先级可以优先于其他目标提前进行爬取。

· 爬取 SPA - 爬取 SPA(单页应用程序)生成预渲染内容(即“SSR”(服务器端渲染))。

· 控制页面 - 无头浏览器可以表单提交、键盘输入、事件操作、生成页面的屏幕截图等。

· 捕获记录 - 对爬取的结果等信息进行捕获记录,并在控制台进行高亮的提醒。

· TypeScript - 拥有类型,通过泛型实现完整的类型。

传统编程对于数据的爬取通常遵循以下步骤:

1. 需求分析与目标确定:

明确爬取数据的目的和范围,确定所需数据的来源网站或API接口。

分析目标网站的结构,识别所需数据在网页中的位置和格式。

2. 环境搭建与库导入:

安装并配置必要的编程环境,如Python。

导入相应的库,如 requests 用于发送HTTP请求,BeautifulSoup 或 lxml 用于解析HTML文档,可能还包括 selenium 用于处理JavaScript渲染的页面。

3. 发送HTTP请求:

使用编程语言中的请求库(如Python的requests.get())向目标网址发送HTTP GET请求。

获取服务器响应的内容,通常是HTML或JSON格式。

4. 内容解析:

对获取的网页内容进行解析,提取所需数据。这一步可能涉及遍历DOM树、匹配标签、属性或使用CSS选择器、XPath等。

对于结构化数据(如API返回的JSON),直接解析数据结构提取信息。

5. 数据清洗与处理:

清除提取数据中的无关字符(如空白符、HTML标签等)。

转换数据格式,如日期格式标准化、字符串转数字等。

处理缺失值或异常数据。

6. 数据存储:

将清洗后的数据保存到文件(如CSV、JSON、数据库)中,便于后续使用或分析。

可能需要设计数据库模型,使用SQL语句或ORM工具进行数据入库。

这里使用X-crwal库作为爬取库

QQ图片20240511202246.png

编译这个mjs文件我们可以得到:

XBW1TCAD5F}VH3CHE.png

显而易见,传统编程途径在数据抓取领域的实施包含了多个精细且繁琐的环节,这对初学者而言构成了不小的挑战。尤其是,若不具备对特定库语法及应用的熟练掌握,入门障碍尤为显著,进一步加剧了学习曲线的陡峭程度。

AIGC 提示词工程 下对于数据的爬取

自从AI第一次被广泛认知,确实可以追溯到多个标志性事件,但如果聚焦于最近的热潮,OpenAI的ChatGPT无疑是一个转折点。ChatGPT是在2022年底由OpenAI发布的一个革命性的对话模型,它迅速吸引了全球范围内的广泛关注。这一模型基于OpenAI先前的GPT系列,特别是GPT-3.5,展示了显著提升的对话理解和生成能力,标志着自然语言处理(NLP)技术进入了一个新的时代。

在这个的背景下,特别是考虑到ChatGPT及其背后的技术发展,AIGC(人工智能生成内容)数据爬取在提示词工程中的作用变得尤为重要。提示词工程是指构建有效、精准的文本提示来引导AI模型生成期望内容的过程。以下是几个关键点,分析了数据爬取在此领域的作用:

 

数据量与多样性: 高质量的训练数据是AI模型学习的基础。为了使AI能够生成丰富多样、符合人类预期的内容,数据爬取成为收集大量、多领域文本数据的重要手段。通过爬取网页、社交媒体、新闻站点等,可以获得覆盖广泛主题和风格的数据,增强模型的泛化能力和创造力。

 

语境理解: 为了使AIGC模型更好地理解用户提供的提示并生成上下文相关的回复,需要大量的上下文丰富的数据。通过爬取包含对话、评论、问答等形式的在线内容,可以帮助模型学习不同情境下的语言使用习惯和逻辑推理,提高对话的真实感和连贯性。

 

个性化与定制化: AIGC的一个趋势是提供更加个性化的用户体验。数据爬取可以根据特定需求定向获取信息,比如针对某个行业、文化背景或用户群体的语言特点进行数据搜集,从而训练出更能满足特定场景需求的模型。

 

伦理与法律考量: 在进行数据爬取时,需严格遵守相关法律法规,尊重版权和用户隐私。特别是对于公开网络数据的利用,需要确保数据的合法合规使用,避免侵犯个人隐私或知识产权。此外,还需要对数据进行去噪、过滤敏感信息等预处理,确保模型训练数据的纯净度和安全性。

 

测  试:

对于AI测试的调教,作为提示词工程师首先不能想着一步到位,并不是AI不能做到这项工作,而是我们对于问题的描述不够清晰。首先我们找到目标网页的

PS:本文章使用的AI大模型使用阿里的通义千问

1.模型的优化应当采取逐步推进的策略,首当其冲的是明确目标模块并着手编辑。启动HTML代码的修订之旅,细致挖掘其中蕴含的宝贵信息。在此环节,我的焦点集中于从当前网页中精心抽取一系列电影的关键特性,具体包括:电影标题(name)、封面图片链接(picture)、剧情简介(info)、评分评价(score),以及参与评论的人数(commentsNumber)。

屏幕截图 2024-05-11 190451.png

2.将代码片段嵌入模型架构之中,并务必清晰无误地界定数据输出的具体要求。例如,明确指示在代码执行过程中,所提取的数据元素应如何命名,确保数据导出时能采用既定的标识符,如电影名称标记为name、封面链接为picture、简介信息为info、评分信息为score,以及评论人数为commentsNumber,以此促进后续处理流程的高效与有序。

M3(XRYR4TZ@22@3%P7Q9_9E.png

自然而然地,有疑惑在所难免:既然追求全面数据,为何要特地选取单个数据实例进行剖析?此番操作,实则是向模型馈送一场“思维小酌”——一种精心策划的引导,旨在明确传达我们的真实诉求。通过这一步精妙的“预训练”,模型得以洞悉核心需求,正如智者在启程前细品路书,后续的征程因而变得顺畅高效。请君随我继续深入探索,精彩即将揭晓。

3.直指核心,将目标网页的URL作为最终触媒,馈予模型进行收尾阶段的微调。此际,恰如其分的语言艺术同样举足轻重,需巧妙运用,与前述精湛表述相得益彰,确保模型不仅接收信息,更能深刻领悟其精髓,从而达至调试的最佳效能。

(WSQFM_M(T$(40DAHJJO@CR.png

想必有同学细心的发现了,在前面加上一句:“用上面同样的方法分析”,而这正是我们独到之处的精华。得益于前期的精心准备,我们无需重复耗时于模型的认知调校,它已蓄势待发,准备无缝对接,逐一透彻解析各项指标。如此一来,效率与洞察力并行不悖,每一步进展都彰显了前期积淀的价值。

总结

相较于传统编程手段,在AIGC提示词工程的辅助下,爬虫任务显得更为简易便捷,大大减轻了技术门槛。然而,值得注意的是,AIGC在调试阶段对指令语言的精准度要求极高,一丝不苟;细微的表述差异可能导致输出结果谬以千里,凸显了高度的语义把控重要性。因此,对于有志于深入爬虫领域发展的学习者而言,掌握扎实的传统编程基础仍是不可或缺的旅程起点。相反,对于仅需获取数据而不意图深耕技术细节的个体,精通AIGC提示词工程的运用,便足以满足其基本需求,实现数据获取的目标。

个人拙见欢迎交流