掘金人工智能本月最热 2024年06月09日
用爬虫带你感受AIGC的力量
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

先带各位再重温一下爬虫

爬虫,可以解释为爬取网页中的数据,收集和提取互联网上的数据。首先我们需要做什么呢?第一步:发出http请求,获取html字符串;第二步:对字符串做查找正则,伪代码;第三步:聚焦,聚焦在所要的数据标签比如table、title、picture等等;最后:将这些数据放进JSON数组。

为什么说爬虫可以变得轻而易举

你也许想问:难不成上面的步骤还能再简化吗?当然不是,上面都是必要的操作,那为什么说现在爬虫可以变得更加轻松了呢。其实我们要做的就是将传统编程与提示词工程结合,这么说也许会很模糊,也就是用你固有的编程思维结合AI思维,来将爬虫简单化。那该如何简单化呢?上面列举了爬虫所需的几个步骤,我们也知道,这是每个爬虫操作都需要去执行的。这种固有的操作,我们完全可以将它交给AI,想必说到这里,你也明白了。就是将这几个步骤结合在一起让AIGC来完成,实现传统编程和提示词工程的碰撞,从编程思维来到AI思维,将四步操作变成一步,就是将html提取,编辑好合适的语言发给AIGC,它就会生成你需要的东西。

做个对比

对豆瓣电影列表的爬虫代码如下(以往的方法)

import { createCrawl } from 'x-crawl' // 创建爬虫// 创建爬虫应用const crawlApp = createCrawl() // // crawlPage 用于爬取页面crawlApp.crawlPage('https://movie.douban.com/chart').then(async (res) => {      const { page, browser } = res.data    // 等待元素出现在页面中  await page.waitForSelector('#wrapper #content .article')  const filmHandleList = await page.$$('#wrapper #content .article table')  const pendingTask = []  for (const filmHandle of filmHandleList) {    // 封面链接(picture)    const picturePending = filmHandle.$eval('td img', (img) => img.src)    // console.log(picturePending, '////')    // 电影名(name)    const namePending = filmHandle.$eval(      'td:nth-child(2) a',      (el) => el.innerText.split(' / ')[0]    )    // 简介(info)    const infoPending = filmHandle.$eval(      'td:nth-child(2) .pl',      (el) => el.textContent    )    // 评分(score)    // const scorePending = filmHandle.$eval(    //   'td:nth-child(2) .star .rating_nums',    //   (el) => el.textContent    // )    // 评论人数(commentsNumber)    const commentsNumberPending = filmHandle.$eval(      'td:nth-child(2) .star .pl',      (el) => el.textContent?.replace(/\(|\)/g, '')    )    pendingTask.push([      namePending,      picturePending,      infoPending,    //   scorePending,      commentsNumberPending    ])  }  const filmInfoResult = []  let i = 0  for (const item of pendingTask) {    Promise.all(item).then((res) => {      // filmInfo 是一个电影信息对象,顺序在前面就决定好了      const filmInfo = [        'name',        'picture',        'info',        // 'score',        'commentsNumber'      ].reduce((pre, key, i) => {        pre[key] = res[i]        return pre      }, {})      // 保存每个电影信息      filmInfoResult.push(filmInfo)      // 最后一次的处理      if (pendingTask.length === ++i) {        browser.close()        // 整理,根据数量决定是多还是单        const filmResult = {          element: filmInfoResult,          type: filmInfoResult.length > 1 ? 'multiple' : 'single'        }        console.log(filmResult)      }    })  }})

这代码量挺大吧,我也觉得挺大。而现在给的方法,一句代码都不需要自己动手,只需要CTRL+c和CTRL+v,当然了,不是复制我这里的代码,而是找到你需要的html,再写上你的需求,发给AIGC。

如下(新方法)

<a class="nbg" href="https://movie.douban.com/subject/35490167/" title="破墓"> <img src="https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2905896429.webp" width="75" alt="破墓" class=""> </a> </td><td valign="top"> <div class="pl2"><a href="https://movie.douban.com/subject/35490167/" class=""> 破墓 / <span style="font-size:13px;">The Unearthed Grave / Exhuma</span> </a><p class="pl">2024-02-16(柏林电影节) / 2024-02-22(韩国) / 崔岷植 / 金高银 / 柳海真 / 李到晛 / 全镇基 / 洪瑞俊 / 李大卫 / 小山力也 / 金智安 / 金善映 / 韩国 / 张在现 / 134分钟 / 破墓 / 悬疑 / 惊悚 / 恐怖 / 张宰贤 Jae-hyun Jang / 韩语 / 日语 / 英语</p> <div class="star clearfix"> <span class="allstar35"></span> <span class="rating_nums">6.7</span> <span class="pl">(105471人评价)</span> </div> </div> </td> </tr> </tbody></table> 这是一部电影的html片段,获取需要电影名(name),封面链接(picture),简介(info),评分(score),评论人数(commentsNumber)。请使用括号的单词作为属性名,以JSON对象的格式返回

将它发给AIGC,你便会得到所爬的数据

你看,需要的数据已经获取到了,不需要写任何一句代码,这样一来,爬虫是不是轻松了许多。

总结

如今AI高速发展,不仅爬虫,有很多操作都可以变得轻而易举,交给AIGC,我们的任务就是给它一段合适的提示词(prompt),这大幅减小了工作量,也更加灵活。最后,希望这篇文章能给你帮助,或是你有什么不同的看法,欢迎评论。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

相关文章