老徐说

V1

2023/05/15阅读:26主题:自定义主题1

ChatGPT帮我一小时开发小说爬虫

需求背景

  1. 我喜欢在一个小说APP看小说,它的内容源来自各个小说网站,错别字和广告比较多。
  2. 偶然发现了一个优质的小说网站接口。
  3. 最近参加微信读书365天打卡活动,需要累积300小时的读书时间。
  4. 我想从小说网站把我想看的小说抓取下来,生成txt文本内容。

产品设计

用Go语言实现,展现形式是终端工具,小工具尽量简单轻量,功能也比较简单。避免一上来就Vue、React,NPM安装一大堆依赖包,工具型应用并不一定需求UI界面,后续可能做个简单界面。

功能模块

  1. 小说搜索。输入关键字,输出与关键字标题/作者匹配相关小说列表
  2. 小说查询。输入小说ID,输出小说详情
  3. 章节查询。输入小说ID,输出小说章节列表
  4. 内容查询。输入小说ID和章节,输出小说内容详情
  5. 小说下载。输入小说ID,下载小说所有章节,写入txt文件

开发步骤

  1. Github新建项目
  2. 生成Go代码
  3. 爬取内容后生成txt文件

Github新建项目

image.png image.png

生成Go命令行代码

prompt

你是一个go语言开发专家,帮我用go语言开发一个命令行应用。使用第三方包,减少代码量。举个例子,命令行输入novel help,输出所有命令参数和注释。输入novel search {test},输出json内容 "{
"
books": [
{
"
_id": "343106",
"
title": "从笑傲江湖到大明国师",
"
author": "带刀校尉",
"
shortIntro": "和左冷禅对过掌,和东方不败比过剑,卫央觉着江湖其实也没什么意思,也就下酒的大毛桃还可以,那就种一谷桃",
"
cover": "60/a3/60a3740710ab4e87683c9c18c5ccaed0.jpg",
"
cat": "修真仙侠",
"
followerCount": "16",
"
zt": "连载中",
"
updated": "2022-05-07T16:06:51+00:00",
"
lastchapter": "更新到:第1024章 鞑靼人可眼馋了"
}
]
}"
。输入novel info {id},输出json内容"{
"
_id": "498806",
"
author": "西湖遇雨",
"
cover": "3d/d3/3dd340fcc0113e456fbe51e336539626.jpg",
"
longIntro": "\r\n \r\n【狱中讲课,朱棣偷听后求我当国师】 ",
"
title": "大明国师",
"
zt": "连载中",
"
cat": "都市·青春",
"
wordCount": "1138942",
"
retentionRatio": "55.50",
"
followerCount": "0",
"
updated": "2023-05-08T03:20:50+00:00",
"
chaptersCount": "276",
"
lastChapter": "五月求票!"
}"
。输入novel chapter {id},输出json内容"{
"
_id": "498806",
"
chaptercount": 276,
"
chaptersUpdated": "2023-05-08T03:20:50+00:00",
"
chapters": [
{
"
title": "1章 指点江山又不会改变什么",
"
link": "498806/1",
"
unreadble": false
}]}"
。输入novel content {id} {chapter},输出json内容"{
"
title": "199章 测算太阳?【求月票!】",
"
body": "\n 第199章测算太阳?【求月票!】\n “日月为明.”\n 朱高煦今天的思维似乎异常活跃,他马上又问出了一个奇奇怪怪的问题。 "
}"

输入novel download {id},下载指定小说内容,先调用chapter方法获取所有chapters数量,然后for循环该
数量,调用content方法传入{id}和{chapter},{chapter}就是每次循环的i+1,获取所有body,汇总一起后写入一个以小说标题命名的txt文件。使用"github.com/go-resty/resty/v2"
"github.com/urfave/cli/v2",并且const baseURL = "https://xx.com/"

image.png image.png image.png

爬取内容后生成txt文件

image.png
image.png

总结

  1. ChatGPT开发简单项目确实能减少90%工作量,以该项目为例,简单的查询,搜索功能提问+开发时间总共就一个小时。
  2. 开始的时候没想把下载功能加上去,抱着试一试的心态在提问中加入下载功能,不得不夸ChatGPT写的我预想的要好,甚至考虑了代码的扩展性,支持命令行下载指定文件名
  3. 当然也存在一些低级错误,比如引入了没有用到的包,在设计功能的时候没有考虑业务建模的抽象,当然已经瑕不掩瑜(可能我还没掌握更加准确的Prompt)
  4. 在使用ChatGPT的功能中,我们更多的时间需要花在把业务建模,阅读代码,重构代码,修复Bug以及提问中,尤其是提问,这方面要继续摸索。
  5. 以100分满分,我觉得它应该能得到75分,我估计后续熟练后分数还会提高。从它的代码质量看,完全能够胜任一般公司的80%的CURD功能代码,能够承担中级开发工程师的职责。
  6. 有些特定的业务需求,需要开发者单独处理,因为开发者无法把需求完全转化成Prompt。

分类:

人工智能

标签:

人工智能

作者介绍

老徐说
V1