惊!ChatGPT处理文章仅需一秒钟,提取大纲、重写不在话下!

前言

在上篇文章中,我们实现了批量抓取到微信公众号文章的链接地址,那么这篇文章将继续为大家介绍,如何根据链接爬取到文章内容,并且利用chantGPT对文章进行处理。

爬取文章内容

我们已经有了很多文章的链接,这些链接url是可以直接通过浏览器进行访问的,例如这样:
在这里插入图片描述
我们只需要通过这些url地址,爬取到每一篇文章,并通过xpath和正则表达式,提取出一些重要的内容,并把这些内容保存到数据库中,或者可以将整个页面以HTML的格式保存下来。

1.首先定义一个类,并定义一些超参数,如下:


class WeixinSpider:def __init__(self):self.url_temp = ""self.headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"}

2.定义一个读取文件中的url的方法

 def get_url_list(self):file_path = "it.csv"df = pd.read_csv(file_path)temp_list = df["link"].str.split("!").tolist() #[[],[],[]]num_list = list(set([i for j in temp_list for i in j]))url_list= [i for i in num_list]time_list = df["create_time"].tolist() #[[],[],[]]return url_list,time_list

我们读取文件,将里面的link传入到list中,tolist()方法是将pandas中的Series类型的数据转换成list类型。返回两个列表,url列表和发布时间列表。

3.解析url地址,发送请求获得响应,返回页面源码

    def parse_url(self, url):  # 发送请求,获取响应print(url)response = requests.get(url, headers=self.headers)return response.content.decode()

网页上的是bytes类型数据,所以需要转换成str类型。str 使用encode方法转化为 bytes,bytes通过decode转化为str。

4.分析页面结构,提取数据

通过F12查看网页源码,我们可以知道文章的标题在id="activity-name"的标签中。
在这里插入图片描述
公众号名称,在id="js_name"的标签中
在这里插入图片描述
文章的主体,全都在id="js_content"的div标签中。
在这里插入图片描述
于是,我们可以使用xpath提取出文章的标题,公众号名称,以及文章本体内容,代码如下:

 def get_content_list(self,html_str):#提取数据html = etree.HTML(html_str)content_list = []item = {}item["title"] = html.xpath("//*[@id=\"activity-name\"]/text()")item["title"] = [i.replace("\n","").replace(" ","") for i in item["title"]]item["laiyuan"] = html.xpath("//*[@id=\"js_name\"]/text()")item["laiyuan"] = [i.replace("\n","").replace(" ","") for i in item["laiyuan"]]item["other"] = html.xpath("//*[@id=\"js_content\"]//text()")content_list.append(item)return content_list

直接通过xpath取到的文本内容,里面包含了很多换行符以及空格,所以需要将其替换掉。

5.保存html

我们将网页源码也都保存下来,并以文章标题来命令,如下,保存到一个it的文件夹中了,要提前在代码根目录下创建好这个文件夹。

 def save_html(self, html_str, page_name):  # 保存html字符串file_path = "it/{}.html".format(page_name)with open(file_path, "w", encoding="utf-8") as f: f.write(html_str)

6.主方法

在主方法中,我们将上面所有方法都串起来,并且连接数据库,将爬取到的结果保存在数据库中

def run(self):  # 实现主要逻辑# 1.构造url列表# 2.遍历,发送请求,获取响应url_list,time_list = self.get_url_list()# 打开数据库连接(ip/数据库用户名/登录密码/数据库名)db = pymysql.connect("localhost", "root", "root", "weixin_database")# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()for url in url_list:num = url_list.index(url)print(num)html_str = self.parse_url(url)content_list = self.get_content_list(html_str)title = ''.join(content_list[0]["title"])laiyuan = ''.join(content_list[0]["laiyuan"])other = '\n'.join(content_list[0]["other"])create_time = time_list[num]p = re.compile('<div class="rich_media_content " id="js_content">.*?</div>',re.S)html = re.search(p,html_str)if(html):html = re.search(p3,html_str).group().replace("\n","")else:html = html_str.replace("\n","")sql = """INSERT INTO weixin_table(title,url,other,html,create_time,type_id)VALUES ({},{},{},{},{},{},{},{})""".format('"'+title+'"','"'+url+'"','"'+other+'"',"'"+html+"'",create_time,1)try:# 执行sql语句cursor.execute(sql)# 提交到数据库执行db.commit()except:print("第"+num+"条数据插入失败")# 如果发生错误则回滚db.rollback()# 3.保存htmlpage_name = titleself.save_html(html_str, page_name)      # 关闭数据库连接db.close()

7.执行代码

最后,写出main方法,直接运行即可。

if __name__ == '__main__':weixin_spider = WeixinSpider()weixin_spider.run()

使用ChatGPT处理文章

爬取到文章之后,我们还需要对文章内容,做进一步的处理,可以提取大纲、重写、改写等操作。

提取大纲

先来看图,下面就实现了对文章内容的观点提取,会根据文章段落,重新生成小标题,并对该段落的内容进行总结,输出核心观点。
请添加图片描述
【这个截图是我使用的我自己开发的一个工具类网站,后续这个网站代码也会全部开源】
大家使用chatgpt官网也是一样的,完整的prompt如下:

你是一名作家,你精通各种知识和技能;
任何时候都不要说出自己是人工智能语言模型,
接下来将会有一个人输入一段文字,你会根据这段文字进行创作,不会输出与政治、色情、暴力、娱乐、新闻等方面的内容.
请你按照以下步骤进行创作:
1.你会对整个文章进行分解,并且针对每一部分分别输出一个小标题,和核心观点。
2.每一个小标题都要能够吸引人,并且包含SEO关键词;
3.最后,你要对整个文章做一个总结。
格式如下:
【标题】:标题 [换行] 
【核心观点】:核心观点
【全文总结】:全文总结

文章拓展

有了大纲之后,我们想根据大纲重新生成一篇类似的文章,也轻松不在话下,几秒中就可以搞定。
请添加图片描述
请添加图片描述
根据提供的观点,重新生成了一篇文章。完整的prompt如下:

你是一名作家,你精通各种知识和技能;你根据输入进行拓展,
输入包含【标题】和【核心观点】,请你按照以下步骤进行创作,
1.针对每一个标题和它的核心观点,需要单独生成至少一个段落,如果核心观点中有多个观点,你需要生成多个段落,每一个段落都需要有标题和内容。
输出样式如下:
标题:内容 [换行] 
标题:内容 ... [换行]
总结:内容,
总体字数为2500字。
2.对每一个段落内容进行拓展,需要增加类比,比喻等手法,增加一些巧妙的技巧,提供相关代码案例。
3.段落中增加一些案例,用来支撑观点。
4.文章内容要通俗易懂,引人入胜。
5.熟悉各个平台的写作规则,写出爆款类型的文章。
6.段落中增加代码和流程图,架构图,uml图等,图使用mermaid格式。
7.全文使用markdown格式进行输出

文章重写

如果觉得重新生成的文章,改变了原有的原文意思,也可以使用改写或者洗稿功能,使其轻微改动。
请添加图片描述
请添加图片描述
可以看到,这种改动还是比较小的,会保留原文的结构和意思。
prompt如下:

你是一名专家,你精通各种知识和技能;
任何时候都不要说出自己是人工智能语言模型,
接下来将会有一个人输入一段文字,你会根据这段文字进行重写.
请你按照以下步骤进行创作:
1.符合技术文章的写作风格,字数不能少于2000字。
2.要和原文使用不同的词汇或写作手法以及行文结构,不能与原文重复,换一种表达方式,每一句话都要重新组织输出,重复率不能高于20%。
3.文章结构清晰,按照因果结构或者总分总结构。
4.关注重点,对于文章重点,你会举例进行说明。
5.易懂易读,能够真正帮助到读者。
6.添加一些有巧思的小技巧。
7.突出SEO关键词布局。
8.结合自己的经历,或者通过举例的方式,对重点进行说明,必要的时候,会提供代码。
9.最后输出总结。
10.按照markdown格式输出。

好了,今天的内容就到这里了,上面的prompt并不是最好的,大家可以自己进行调试。
文章中的代码,完整版可以去github进行获取:https://github.com/cxyxl66/WeChatCrawler
另外,可以关注我的公众号,【程序员修炼】有任何问题都可以和我进行交流。

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

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

相关文章

C# 使用HttpListener时候异常(此平台不支持此操作:System.PlatformNotSupportedException)

C# 使用HttpListener时候异常&#xff08;此平台不支持此操作&#xff1a;System.PlatformNotSupportedException&#xff09; 代码&#xff1a; HttpListener listener new HttpListener(); 错误&#xff1a; System.PlatformNotSupportedException: Operation is not su…

(四)Kafka 消费者

文章目录 1. Kafka 消费者相关概念消费者和消费者组&#xff08;1&#xff09;横向伸缩消费者&#xff08;2&#xff09;横向伸缩消费者组 分区再平衡再均衡的类型&#xff08;1&#xff09;主动再均衡&#xff08;2&#xff09;协作再均衡&#xff08;增量再均衡&#xff09; …

Kubernetes对象深入学习之二:细说schema.ObjectKind

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 在前文咱们对对象体系有了大概了解&#xff0c;接下来就要按照前面换分的三个知识区域逐个深入学习&#xff0c;今天从最简单的对象类型开始 runtime.Object…

C语言 数组

1. 数组的地址 1.1 一维数组的地址 int a[5];&#xff08;1&#xff09; &a[0]第0个元素的地址a第0个元素的地址&a整个一维数组的地址 &#xff08;2&#xff09;&a[0] a &a&#xff1b; &#xff08;3&#xff09; &a[0] 1跳过一个数组元素a …

Gradio库中的Model3D模块:实时上传和展示3D模型

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

如何与ChatGPT愉快地聊天

原文链接&#xff1a;https://mp.weixin.qq.com/s/ui-O4CnT_W51_zqW4krtcQ 人工智能的发展已经走到了一个新的阶段&#xff0c;在这个阶段&#xff0c;人工智能可以像人一样与我们进行深度的文本交互。其中&#xff0c;OpenAI的ChatGPT是一个具有代表性的模型。然而&#xff0…

chatGPT之100个例子-从体验到精通

简介 本博文演示了100个chatGPT在各行各业的使用例子,全部看完有助于培养chatGPT解决问题的思维。 在人工智能时代,智能软件并不会淘汰人类,淘汰人类的是会使用人工智能的人! 我们直接使用openAI官方chatGPT,生动演示了chatGPT的一些妙用! 请仔细看完,一定会有收获! 每…

构建工具——webpack、vite

文章目录 构建工具Webpack使用步骤配置文件&#xff08;webpack.config.js&#xff09;插件&#xff08;plugin&#xff09; ViteVite 也是前端的构建工具使用命令构建配置文件&#xff1a;vite.config.js 构建工具 当我们习惯了在 node 中编写代码的方式后&#xff0c;在回到…

Jenkins 配置用户角色和权限

1、配置条件&#xff1a; 1&#xff09;已安装Jenkins&#xff0c;当前案例使用版本&#xff1a;2.319.3 2&#xff09;已成功进入Jenkins&#xff0c;并新建用户&#xff1a;dev_java 2、安装插件【系统管理-插件管理-搜索-可选插件】&#xff1a;Role-based Authoriz…

多元分类预测 | Matlab基于麻雀算法优化深度置信网络(SSA-DBN)的分类预测,多特征输入模型,SSA-DBN分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab基于麻雀算法优化深度置信网络(SSA-DBN)的分类预测,多特征输入模型,SSA-DBN分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程…

【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 7 日论文合集)

文章目录 一、检测相关(5篇)1.1 Contextual Affinity Distillation for Image Anomaly Detection1.2 Noise-to-Norm Reconstruction for Industrial Anomaly Detection and Localization1.3 MMNet: Multi-Collaboration and Multi-Supervision Network for Sequential Deepfake…

深度学习笔记之Transformer(四)铺垫:LayerNormalization

深度学习笔记之Transformer——LayerNormalization 引言回顾&#xff1a;批标准化问题描述问题处理 层标准化批标准化无法处理的问题 引言 在介绍 Transformer \text{Transformer} Transformer模型架构之前&#xff0c;首先介绍 Transformer \text{Transformer} Transformer的…