当前位置:   article > 正文

python爬虫实现AI续写_如何用python语言实现对一个句子的续写

如何用python语言实现对一个句子的续写

python爬虫实现AI续写

前言:审核大大要是有侵权,能不能划出哪些字眼侵权啊!!!内容真的是原创啊!!

1.动机和效果展示
最近b站上有很多的AI续写工具:
在这里插入图片描述
感觉挺有趣的,但是自己python写这样的ai不太现实,仔细看了看它们的特点,发现其实是用不同的ai续写工具完成的。碰巧的是,其中一款叫“****尝鲜版”(## 这回不侵权了吧)的工具,不仅免费,效果好,而且是网页版本。于是萌生出了一个用python爬虫进行续写的工具。
效果如图:
在这里插入图片描述
只有红框部分是我自己上写的过来的,其他都是续写出来的。
在这里插入图片描述
在学校电脑晚自习的时候后台运行差不多一个4个小时可以破万字。
2.原理及实现
(1).进入网页进行分析:
在这里插入图片描述
这么多的网页信息请求等,我发现最重要的其实是novel_ai请求
为何?
在这里插入图片描述
这里我遮挡些不必要的东西,可以发现content就是我们要拿去续写的文本,
而branchid,lastnode,mid,nid,uid里面重要的就是lastnode,这个记录了之前续写节点的_id
看一下返回的response

{
	"status": 0,
	"msg": "ok",
	"data": {
		"nodes": [{
			"_id": "61e37690a487af67fba10e8e",
			"created_at": 1642296976,
			"updated_text": "just now",
			"nid": "61e3768c1c5f5018d2e731e3",
			"values": [{
				"from": "model",
				"value": ",我叫李天宇,我是一个学生。\n这里是我的家庭住址。\n我的家庭是一个农村人,父亲是一个普通工薪阶层,母亲是一个中医师,而我自己则是一个医科学生。\n我在国内的家族是华夏最有权势、最神秘的几个之一"
			}],
			"children": [],
			"nodeid": "61e37690a487af67fba10e8e",
			"parentid": "61e3768c1c5f5018d2e731e4",
			"content": ",我叫李天宇,我是一个学生。\n这里是我的家庭住址。\n我的家庭是一个农村人,父亲是一个普通工薪阶层,母亲是一个中医师,而我自己则是一个医科学生。\n我在国内的家族是华夏最有权势、最神秘的几个之一",
			"isedit": false,
			"hidden": false,
			"brother": ["61e37690a487af67fba10e8e", "61e37690a487af67fba10e8c", "61e37690a487af67fba10e8a"]
		}, {
			"_id": "61e37690a487af67fba10e8c",
			"created_at": 1642296976,
			"updated_text": "just now",
			"nid": "61e3768c1c5f5018d2e731e3",
			"values": [{
				"from": "model",
				"value": "!我叫王文。\n\"你好。\"\n\"嗯?我叫王文。\"\n\"嗯,你好,我叫王文,你呢?\"\n\"我叫李文轩。\"\n\"哦,原来你是王文轩啊,真的没有想到。\"\n\"你也没有想到啊。\"\n\"是啊。\"\n\"对了。\"\n\"怎么了?\"\n\""
			}],
			"children": [],
			"nodeid": "61e37690a487af67fba10e8c",
			"parentid": "61e3768c1c5f5018d2e731e4",
			"content": "!我叫王文。\n\"你好。\"\n\"嗯?我叫王文。\"\n\"嗯,你好,我叫王文,你呢?\"\n\"我叫李文轩。\"\n\"哦,原来你是王文轩啊,真的没有想到。\"\n\"你也没有想到啊。\"\n\"是啊。\"\n\"对了。\"\n\"怎么了?\"\n\"",
			"isedit": false,
			"hidden": false,
			"brother": ["61e37690a487af67fba10e8e", "61e37690a487af67fba10e8c", "61e37690a487af67fba10e8a"]
		}, {
			"_id": "61e37690a487af67fba10e8a",
			"created_at": 1642296976,
			"updated_text": "just now",
			"nid": "61e3768c1c5f5018d2e731e3",
			"values": [{
				"from": "model",
				"value": "!我叫赵飞羽,是一名高中生,现任职于某县的公务员。我是一名勤劳踏实,有责任心的人,请大家放心。\n我会继续努力,不辜负大家的期望。\n这是我的手机号码,希望我们以后可以联系。\n感谢大家!\n新书《"
			}],
			"children": [],
			"nodeid": "61e37690a487af67fba10e8a",
			"parentid": "61e3768c1c5f5018d2e731e4",
			"content": "!我叫赵飞羽,是一名高中生,现任职于某县的公务员。我是一名勤劳踏实,有责任心的人,请大家放心。\n我会继续努力,不辜负大家的期望。\n这是我的手机号码,希望我们以后可以联系。\n感谢大家!\n新书《",
			"isedit": false,
			"hidden": false,
			"brother": ["61e37690a487af67fba10e8e", "61e37690a487af67fba10e8c", "61e37690a487af67fba10e8a"]
		}],
		"count": 0,
		"cur_nodeid": "61e3768c1c5f5018d2e731e4"
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

返回一个列表,记录了续写的返回值,如果我们每次都选择第一个,无线循环访问,就可以实现一直续写了。
思路是:
先novel_ai把自己要续写的内容传过去,收到回复后在把回复的内容第一个加到源文本中,继续传过去,循环往复即可。
而novel_ai:
在这里插入图片描述
这里我隐藏的原因是这是我的访问地址,你要进去访问要先手机号验证,我总不能把我的给你去玩吧。。。。
提示:这个网页访问不需要填写headers,管的很宽的,毕竟每次续写都要15——20s…
上代码:

import requests
import json


url = "http://if.caiyunai.com/v2/novel/?????????/novel_ai"

payloaddata = {
    "branchid":"61dab2c7c14c1171b19578a9",
    "content": "我不是神,我只是一介凡人!", #默认值,挺中二的。。。
    "lang": "zh",
    "lastnode": "61dab2c7c14c1171b19578a8",
    "mid": "60094a2a9661080dc490f75a",
    "nid": "61dab2c7c14c1171b19578a7",
    "ostype": "",
    "status": "http",
    "storyline": "true",
    "title": "",
    "uid": "????????" 
}
#这里我加入了文本输入,这样方便一点
f_path = input("输入自己的内容文件:")
f = open(f_path,mode="a+",encoding="utf-8")
f.seek(0,0)
str=""
for each_line in f:
    str=str + each_line + "\n"
payloaddata["content"] = str
f.close()
temp="2"
while temp != "1" :
	#为什么每次我都重新打开呢,因为是无限循环,所以中途退出的可能没有保存
	#所以每次都打开关闭,确保保存了
    f = open(f_path,mode="a+",encoding="utf-8")
    f.seek(0,0)
    str=""
    for each_line in f:
        str=str + each_line + "\n"
    payloaddata["content"] = str    
    rep = requests.post(url,data=json.dumps(payloaddata))
    dit = rep.json()
    rep.close()
    dit = dit["data"]["nodes"][0]
    print("为你返回续写的内容为:"+"--------------------------------------------------------------------\n"+dit["content"])
    payloaddata["content"] = payloaddata["content"] + dit["content"]
    payloaddata["lastnode"] = dit["_id"]
    f.write(dit["content"])
    f.close()
#print(dit["data"]["nodes"]["_id"])


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

大功告成!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/651026
推荐阅读
相关标签
  

闽ICP备14008679号