一种资讯自动分发的方法与流程

文档序号:33359362发布日期:2023-03-07 20:15阅读:51来源:国知局
1.本发明涉及数据处理
技术领域
:,具体来讲是一种资讯自动分发的方法。
背景技术
::2.客户对资讯二次编辑的需求使得部分资讯产品还需要编辑word格式的版本;部分产品组合多篇资讯,非常耗时,而且容易出错。客户要求资讯第一时间触达,所以资讯编辑人员需要通过邮件或者社交软件,准时分发给客户,操作繁琐而且时间很难把握。3.现有专利《一种智能研报生成方法及终端》(专利申请号:cn201910743420.1),爬取互联网上的资讯,实现了自动化输出word等,解决了人工编辑的不便利性。但是资讯对版权的要求使得大部分资讯依然需要人工干预,而且自动生产的word还要需要人工分发给客户,不能满足第一时间准确触达客户的要求。4.现有专利《一种用于html转换为word文档的方法及装置》(专利申请号:201510802212.6),把html资讯转成word,保留了样式。但是没有关注表格的呈现,导致经常出现表格缺失边界线,表格范围超出文档边界等美观问题。而且没有将外部图片链接内嵌到word中,使得图片呈现的流畅度和美观不够。5.目前在转换html为word的后台软件中,应用较广并且表现优秀的软件libreoffice,和其它软件一样也有部分样式缺失问题。html资讯素材来自很多渠道,字体多种多样,在生成word的时候不一定支持种类繁多的字体,字体不支持直接导致样式缺失。即使支持所有字体也会影响word整体的美观性。这些软件还有表格边框缺失,表格边框超出边界等美观问题和外链图片呈现不流畅问题。6.目前转换html为word的方法,都是基于html既定的样式,不能根据html中文本的结构,自定义渲染word,比如标题和正文等。技术实现要素:7.针对现有技术中存在的缺陷,本发明的目的在于提供一种资讯自动分发的方法,实现了word中标题和正文的自定义渲染;解决了word中部分样式缺失问题;解决了word表格边框缺失,表格内文本格式错乱以及表格范围超出文档边界等美观问题和外链图片呈现不流畅问题。8.为达到以上目的,本发明采取的技术方案是:一种资讯自动分发的方法,包括以下步骤:9.步骤s101.编辑资讯html全文并发布资讯;10.步骤s102.分发配置记录资讯的模块和分发对象的对应关系;11.步骤s103.提取html正文纯文本和图片,然后分发内容到企业微信群;12.步骤s104.重新渲染html;13.步骤s105.将资讯html转换为word;14.步骤s106.重新渲染word;15.步骤s107.通过邮件分发word。16.本发明还公开了一种资讯自动分发的方法,包括以下步骤:17.步骤s201.按照预先设定的时间,遍历定时发布的产品;18.步骤s202.检查定时发布产品的发布时间是否已到,若是,则跳转至步骤s203;若否,则跳转至步骤s201;19.步骤s203.检查最新的组合资讯是否已存在,若是,则跳转至步骤s201;若否,则根据产品包含的模块,检查周期内需要组合的资讯是否全部已发布,若是,则跳转至步骤s204;若否,则跳转至步骤s201;20.步骤s204.组合资讯html;21.步骤s205.重新渲染html;22.步骤s206.将资讯html转换为word;23.步骤s207.重新渲染word;24.步骤s208.查找产品的分发配置;25.步骤s209.分发word到企业微信群;26.步骤s210.通过邮件分发word。27.在上述技术方案的基础上,所述组合资讯html包括以下步骤:28.步骤s301.产品包含多个有序栏目,首先对产品的栏目排序;29.步骤s302.栏目包含多个有序模块,拼接栏目资讯html,首先添加栏目信息;30.步骤s303.对栏目的模块排序,遍历每个模块;31.步骤s304.根据产品类型,查询对应周期内属于该模块的最新一篇资讯详情,包括标题和正文html;32.步骤s305.拼接模块相关资讯html;33.步骤s306.资讯html添加产品说明。34.在上述技术方案的基础上,步骤s301中,产品的组合资讯拼接公式如下所示:35.p=l1+l2+li+…+ln36.公式说明:p表示组合资讯的html,li表示第i个栏目的组合资讯,n表示产品的栏目个数。37.在上述技术方案的基础上,步骤s302中,栏目的组合资讯拼接公式如下所示:38.l=lm+m1+m2+mi+…+mn39.lm=”《p》”+lt+ln+”《/p》”40.公式说明:栏目信息lm,用html的p标签表示;lt表示栏目的token字符串,使用唯一性字符串标识,后面拼接栏目名称ln;l表示栏目组合资讯的html,mi表示第i个模块的组合资讯,n表示栏目的模块个数;41.lt的作用,是在重新渲染word的时候,通过token识别后面的栏目名称,最后使用栏目的样式准确渲染栏目信息。42.在上述技术方案的基础上,步骤s305中,模块的组合资讯拼接公式如下所示:43.m=”《p》”+mt+title+”《/p》”+body44.公式说明:m表示模块组合资讯的html;模块资讯标题title,用html的p标签表示;mt表示模块资讯标题的token字符串,使用唯一性字符串标识,后面拼接title;body表示模块资讯正文html;45.mt的作用,是在重新渲染word的时候,通过token识别后面的模块资讯标题,最后使用模块资讯标题的样式准确渲染标题。46.在上述技术方案的基础上,步骤s306中,产品的头尾拼接公式如下所示:47.h=”《p》”+jt+js+”《/p》”+”《p》”+st+sj+”《/p》”48.t=”《p》”+mz+”《/p》”49.p1=h+p+t50.公式说明:p表示所有模块资讯拼接完成后的资讯html,h和t分别表示组合资讯的头部和尾部,p1表示最终的组合资讯html;51.产品介绍js,用html的p标签表示;jt表示产品介绍的token字符串,使用唯一性字符串标识,后面拼接js;52.产品时间sj,用html的p标签表示;st表示产品时间的token字符串,使用唯一性字符串标识,后面拼接sj;53.jt和st的作用,是在重新渲染word的时候,通过token识别后面的产品介绍和产品时间,最后分别使用产品介绍和产品时间的样式准确渲染;54.所有token字符串长度一致,以便于统一识别。55.在上述技术方案的基础上,所述重新渲染html,包括以下步骤:56.步骤s401.解析资讯html,得到树形结构的html标签节点对象bs;57.步骤s402.遍历html顶级段落标签节点;58.步骤s403.递归检查子节点;59.步骤s404.判断是否为字符串节点,若是,则跳转至步骤s402;若否,则跳转至步骤s405;60.步骤s405.调整节点字体,并判断是否完成遍历html顶级段落标签节点,若是,则跳转至步骤s406;若否,则跳转至步骤s402;61.步骤s406.遍历表格节点;62.步骤s407.调整表格标签节点的属性;63.步骤s408.遍历表格标签节点的各个单元格64.步骤s409.调整单元格标签;65.步骤s410.保存html文件。66.在上述技术方案的基础上,所述重新渲染word,包括以下步骤:67.步骤s501.初始化word文档对象;读对象docr为原始word文档对象,写对象docw为新渲染的word文档对象;68.步骤s502.word文档对象的元素包含在对象的body里面,遍历docr的body的元素列表;69.步骤s503.检查元素的类型,包括表格和段落;70.步骤s504.检查元素是否为表格元素;若是,则跳转至步骤s505;若否,则跳转至步骤s506;71.步骤s505.把元素插入到写对象的body的元素中,并跳转至步骤s502;72.步骤s506.检查段落是否为标题,若是,则跳转至步骤s507;若否,则跳转至步骤s508;73.步骤s507.给写对象添加标题,并跳转至步骤s502;74.步骤s508.给写对象添加段落;75.步骤s509.复制段落的文字块到写对象中;76.步骤s510.判断段落是否包含关联图片,若是,则跳转至步骤s511;若否,则跳转至步骤s502;77.步骤s511.嵌入关联图片到写对象;78.步骤s512.统一写对象的表格的样式;79.步骤s513.保存写对象docw为word文件。80.在上述技术方案的基础上,步骤s512中,统一写对象的表格的样式,包括以下步骤:81.步骤s601.遍历docw的表格列表;82.步骤s602.调整表格元素的样式;设置对齐方式为居中对齐,设置自动调整属性;83.步骤s603.遍历表格的单元格;表格包括多行,行包括多单元格;84.步骤s604.调整单元格cell的样式;设置宽度非自定义,设置自动调整属性;85.步骤s605.对单元格cell,遍历其段落列表;86.步骤s606.对单元格中的每个段落,调整段落样式:设置前后段落间距相等。87.本发明的有益效果在于:88.1、本发明的资讯自动分发系统实现了资讯word产品在第一时间自动而且准确触达客户。资讯自动分发系统对于需要即时发送给客户的资讯,资讯编辑完成后立即把html资讯转成word格式,然后根据资讯模块标签关联的分发配置,通过邮件或者企业微信自动发送给客户。对于日刊等需要定时组合然后发送的资讯产品,利用定时任务,根据模块标签自动组合资讯,然后转换成word格式,最后根据资讯产品关联的分发配置,通过邮件或者企业微信自动发送给客户。89.2、本发明的资讯自动分发系统实现了word中标题和正文的自定义渲染;解决了word中部分样式缺失问题;解决了word表格边框缺失,表格内文本格式错乱以及表格范围超出文档边界等美观问题和外链图片呈现不流畅问题。结构清晰并且html样式完全保留的word,和web端的资讯体验没有差异,而且更流畅。附图说明90.图1为本发明中资讯编辑和即时分发总体流程图;91.图2为本发明中资讯定时分发word总体流程图;92.图3为本发明中组合资讯的算法流程图;93.图4为本发明中重新渲染html流程图;94.图5为本发明中重新渲染word流程图;95.图6为本发明中统一表格样式流程图;96.图7为百度编辑器编辑资讯实例图;97.图8为资讯预览实例图;98.图9为分发配置实例图;99.图10为企业微信群发资讯实例图;100.图11为html转换word(无表格)实例图;101.图12为邮件发送word实例图;102.图13为产品配置实例图;103.图14为栏目配置实例图;104.图15为组合资讯html预览实例图;105.图16为html转换word(含表格)实例图;106.图17为企业微信群分发word实例图。具体实施方式107.下面结合说明书的附图,通过对本发明的具体实施方式作进一步的描述,使本发明的技术方案及其有益效果更加清楚、明确。下面通过参考附图描述实施例是示例性的,旨在解释本发明,而不能理解为对本发明的限制。108.参见图1所示,本发明提供了一种资讯编辑和即时分发的方法:109.1.使用富文本编辑器编辑资讯html全文,然后附加标题,模块等字段,最后发布资讯。110.2.分发配置记录资讯的模块(或产品)和分发对象(包括邮箱,企业微信机器人接口参数)的对应关系。通过资讯的模块信息找到分发的邮箱地址和企业微信机器人接口地址。111.3.首先利用正则表达式匹配资讯html中的图片标签,提取正文纯文本和图片。然后使用企业微信机器人接口url,调用企业微信机器人接口,分发标题,正文纯文本,以及图片到企业微信群。112.4.重新渲染html。113.5.使用libreoffice转换资讯html为word文件。114.6.重新渲染word。115.7.使用smtp邮件发送接口,给需要分发的邮箱地址发送word文件。116.参见图2所示,本发明还提供了一种资讯定时分发word的方法:117.1.定时任务每隔5分钟,遍历定时发布的产品(包括日刊,周刊和月刊)。118.2.检查定时发布产品的发布时间,如果时间点还没到,继续遍历其它定时发布的产品。119.3.如果时间点到了,检查最新的组合资讯是否已存在,如果已经存在,继续遍历其它定时发布的产品;如果组合资讯不存在,则根据产品包含的模块,检查周期内(日,周或月)需要组合的资讯是否全部已发布。如果不满足该条件,继续遍历其它定时发布的产品。120.4.根据产品包含的模块,组合周期内相关模块的资讯,包括标题和正文。然后保存组合html资讯到数据库。121.5.重新渲染组合资讯html。122.6.使用libreoffice转换组合资讯html为word文件。123.7.重新渲染word。124.8.通过产品名称查找分发配置,得到分发的邮箱地址或企业微信机器人接口地址。125.9.使用企业微信机器人接口url,调用企业微信机器人接口,分发word到企业微信群。126.10.使用smtp邮件发送接口,给需要分发的邮箱地址发送word文件。127.参见图3所示,组合资讯的算法说明:128.1.产品包含多个有序栏目,首先对产品的栏目排序。129.产品的组合资讯拼接公式如下所示:130.p=l1+l2+li+…+ln131.公式说明:p表示组合资讯的html,li表示第i个栏目的组合资讯,n表示产品的栏目个数。132.2.栏目包含多个有序模块,拼接栏目资讯html,首先添加栏目信息。133.栏目的组合资讯拼接公式如下所示:134.l=lm+m1+m2+mi+…+mn135.lm=”《p》”+lt+ln+”《/p》”136.公式说明:栏目信息lm,用html的p标签表示。lt表示栏目的token字符串,使用唯一性字符串标识,后面拼接栏目名称ln。l表示栏目组合资讯的html,mi表示第i个模块的组合资讯,n表示栏目的模块个数。137.lt的作用,是在重新渲染word的时候,通过token识别后面的栏目名称,最后使用栏目的样式准确渲染栏目信息。138.3.对栏目的模块排序,遍历每个模块。139.4.根据产品类型(日刊,周刊,月刊),查询对应周期内属于该模块的最新一篇资讯详情,包括标题和正文html。140.5.拼接模块相关资讯html。141.模块的组合资讯拼接公式如下所示:142.m=”《p》”+mt+title+”《/p》”+body143.公式说明:m表示模块组合资讯的html。模块资讯标题title,用html的p标签表示。mt表示模块资讯标题的token字符串,使用唯一性字符串标识,后面拼接title。body表示模块资讯正文html。144.mt的作用,是在重新渲染word的时候,通过token识别后面的模块资讯标题,最后使用模块资讯标题的样式准确渲染标题。145.6.产品的主要资讯内容组合完成后,最后拼接产品名称,介绍,时间,免责声明等信息。146.产品的头尾拼接公式如下所示:147.h=”《p》”+jt+js+”《/p》”+”《p》”+st+sj+”《/p》”148.t=”《p》”+mz+”《/p》”149.p1=h+p+t150.公式说明:p表示所有模块资讯拼接完成后的资讯html,h和t分别表示组合资讯的头部和尾部,p1表示最终的组合资讯html。151.产品介绍js,用html的p标签表示。jt表示产品介绍的token字符串,使用唯一性字符串标识,后面拼接js。152.产品时间sj,用html的p标签表示。st表示产品时间的token字符串,使用唯一性字符串标识,后面拼接sj。153.jt和st的作用,是在重新渲染word的时候,通过token识别后面的产品介绍和产品时间,最后分别使用产品介绍和产品时间的样式准确渲染。154.所有token字符串长度一致,以便于统一识别。155.参见图4所示,重新渲染html流程说明:156.1.使用beautifulsoup库解析资讯html,得到树形结构的html标签节点对象bs。157.每个节点都能直接找到其兄弟节点和子节点。158.2.遍历html顶级p标签节点,即“《p》”标签。159.遍历的方法如下:160.从bs直接找到第一个p标签节点p1。161.通过p1找到其所有兄弟节点,这样就得到所有顶级p节点了。162.3.找到所有顶级p节点后,递归检查顶级p节点的子节点。163.节点如果是字符串节点,则表示没有子节点。164.4.如果节点是字符串节点,继续遍历下一个顶级p节点。165.5.如果节点不是叶子结点,则统一字体,调整font-family属性。166.检查节点标签n的style属性,如果不存在,直接用默认字体defaultff给style属性赋值。167.如果style属性存在,则检查style属性的子属性font-family,将其值替换为defaultff。168.6.遍历顶级p节点完成后,遍历表格节点,即“《table》”标签。表格节点列表tlist通过bs过滤“《table》”标签得到。169.7.调整表格标签节点的属性:设置table标签的width属性,与style属性的width子属性值一致。具体方法如下:170.检查table标签t的属性列表,如果包含style属性和width属性,则提取style属性的子属性width的值sw,给t的width属性赋值为sw。171.8.遍历表格标签节点的各个单元格,即“《td》”标签。172.单元格列表tdlist通过bs过滤“《td》”标签得到。173.9.统一设置td单元格的样式。174.对于单元格标签ce的style属性的子属性,包括上边界线(border-top),下边界线(border-bottom),左边界线(border-left),右边界线(border-right),如果都不存在则统一添加,线的粗细,颜色等均保持一致。175.如果上下左右边界线只有其中的一个或几个,则补齐其它边界线,粗细,颜色等均保持一致。176.10.最后保存html文件。177.参见图5所示,重新渲染word的流程说明:178.1.使用python-docx解析word,初始化word文档对象:读对象docr为原始word文档对象,写对象docw为新渲染的word文档对象。179.2.word文档对象的元素包含在对象的body里面,遍历docr的body的元素列表。180.3.检查元素的类型,包括表格和段落。181.4.检查元素是否为表格元素。182.5.如果是表格则把元素插入到写对象的body的元素中。183.6.如果是段落元素,则通过以下方法检查段落是否为标题:184.1)首先获取段落para的文本pt。185.2)遍历token字符串列表,包括产品介绍token字符串jt,产品时间token字符串st,栏目token字符串lt和模块token字符串mt,长度一致为tl。186.3)检查pt的长度pl,如果pl《=tl,继续遍历其它token字符串;否则检查token字符串与pt前tl长度的子串是否相等,如果相等则确定了段落元素是标题,同时确定了标题级别;否则继续遍历其它token字符串。187.4)如果token字符串全部没匹配,则确定段落元素不是标题。188.7.如果段落元素是标题,则通过以下方法添加标题:189.1)把pt截掉tl长度,得到真正的标题文本rpt。190.2)根据标题级别和标题文本rpt,给写对象添加标题。191.3)新加标题的字体大小,样式包括对齐方式,颜色,是否加粗,是否加下划线等,按照标题级别统一设置。192.8.如果段落元素不是标题,则给写对象添加段落正文paraw,统一设置段落的样式,包括首行缩进,行间距,段落间距等。193.9.段落按照样式(包括颜色、字体、粗细、下划线、斜体等)分为不同的文字块。读对象的段落的文字块列表为runslist。复制runslist的文字块到写对象中,具体步骤如下:194.1)遍历runslist的文字块runr,获取其文本runrtext。195.2)写对象新加的段落paraw,根据文字块文本runrtext,添加文字块。196.3)根据runr的样式,给新加文字块样式属性一一赋值,包括颜色等。197.10.判断段落是否包含关联图片的依据是,段落的xml属性值即paraxml是否包含特征字符串"rid"。如果paraxml包含"rid",则段落包含关联图片。198.11.如果段落包含关联图片,则嵌入关联图片到写对象,具体步骤如下:199.1)通过正则匹配查找"rid"后面的关联的图片的关联id即imgid,是数字类型。200.2)通过图片的关联id即imgid得到图片的url即imgurl。201.3)检查imgurl的后缀名,是否符合图片的后缀名(jpg,png,jpeg等),如果不符合,则结束嵌入操作。202.4)通过图片链接imgurl,下载文件到本地。203.5)然后给docw添加新段落,在新段落中,以合适的宽度添加本地图片,完成图片的嵌入。204.12.读对象的body的元素列表遍历完成后,统一写对象的表格的样式,包括自动调整等属性,205.13.最后保存写对象docw为word文件。206.参见图6所示,统一表格样式的流程说明:207.1)遍历docw的表格列表。208.2)调整表格元素的样式。设置对齐方式为居中对齐,设置自动调整属性。209.3)遍历表格的单元格。表格包括多行,行包括多单元格。210.4)调整单元格cell的样式。设置宽度非自定义,设置自动调整属性。211.5)对单元格cell,遍历其段落列表。212.6)对单元格中的每个段落,调整段落样式:设置前后段落间距相等。213.实施例1资讯编辑和即时分发的实例。214.1.资讯编辑使用百度编辑器ueditor,如图7所示;215.使用百度编辑器编辑资讯html全文,然后附加标题,模块等字段,发布资讯,资讯预览见图8所示。216.2.分发配置记录资讯的模块(或产品)和分发对象(包括邮箱,企业微信机器人接口url)的对应关系。如图9所示;217.3.发布资讯时,调用企业微信机器人接口,分发标题(根据分发配置决定是否分发),正文纯文本,以及图片到企业微信群。如图10所示;218.4.资讯html重新渲染,统一字体,然后使用libreoffice的转换命令将其转换为word,最后利用python-docx重新渲染word,保留了html的样式(包括颜色,加粗等),关联图片嵌入到word里,如图11所示;219.5.根据分发配置,使用smtp邮件发送接口,给对应的邮箱地址发送word文件,如图12所示。220.实施例2资讯定时分发word的实例221.1.定时任务根据产品配置,周期(每隔5分钟)遍历定时发布的产品(包括日刊,周刊和月刊),产品配置如图13所示;222.一个产品包含多个栏目,如图13所示。一个栏目包含多个模块,如图14所示。对于定时发布的产品,如果时间点到了,检查最新的组合资讯是否已存在,如果已经存在,继续遍历其它定时发布的产品;如果组合资讯不存在,则根据产品包含的模块,检查周期内(日,周或月)需要组合的资讯是否全部已发布。如果不满足该条件,继续遍历其它定时发布的产品。223.2.根据产品和模块的关系,组合周期内相关模块已发布的资讯,包括标题和正文。组合资讯html预览如图15所示;224.3.资讯html重新渲染,调整表格和单元格的样式;然后转换word;最后重新渲染word,通过匹配唯一性token,识别正文或者标题(以及标题级别),根据标题级别自定义样式渲染标题,使用正文样式渲染正文。渲染完成后,栏目信息,模块标题和正文分别有自己独立的样式,表格的边框线完整而且大小能自动调整。对于表格内的文本,前后段落间距相等。整体结构清晰而且美观。包含表格的word实例如图16所示;225.4.通过产品名称查找分发配置,得到分发的邮箱地址或企业微信机器人接口url。调用企业微信机器人接口,分发word到企业微信群,企业微信群分发实例如图17所示。226.5.根据分发配置,使用smtp邮件发送接口,给对应的邮箱地址发送word文件。227.在说明书的描述中,参考术语“一个实施例”、“优选地”、“示例”、“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点,包含于本发明的至少一个实施例或示例中,在本说明书中对于上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或者示例中以合适方式结合。228.本发明不局限于上述实施方式,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1