公开/公告号CN113835740A
专利类型发明专利
公开/公告日2021-12-24
原文格式PDF
申请/专利权人 山东捷瑞数字科技股份有限公司;
申请/专利号CN202111427350.2
申请日2021-11-29
分类号G06F8/70(20180101);
代理机构37230 烟台智宇知识产权事务所(特殊普通合伙);
代理人李增发
地址 264000 山东省烟台市莱山区同和路26号
入库时间 2023-06-19 13:49:36
技术领域
本发明涉及新一代信息技术领域,具体涉及一般编码、译码及代码转换。
背景技术
随着互联网的发展,网站数量数以亿计。面对互联网上急剧增加的信息,搜索引擎的出现为信息检索提供了极大的便利,所以,搜索引擎优化对网页的重要性不言而喻。
搜索引擎优化可以让网站被更多的用户搜索到,拥有更高的曝光率。尤其对于企业级网站来说,用户通过搜索相关关键字来访问站点,则此类用户是目标用户。只要加大网站建设力度,有利于用户的精准转化。
网页前端开发的三大基本语言包括:HTML、CSS和JavaScript。即,要完成网页的搜索引擎优化,核心便是完成这三大语言的优化。目前有不少线上工具可以完成上述三种语言的检测,修复语法错误、标签、属性、属性值错误,格式化,均是保证语言的正确、完整,简洁性,但并没有针对搜索引擎优化方面的处理,这部分可以提高网站整体质量的工作还是靠开发人员手动处理,所以最终网页的搜索引擎优化程度几乎取决于开发人员的优化意识和经验,巨大的代码量将不仅会增加很多人工成本,降低开发人员的工作效率,并且无法做到保证系统、全面的优化。
发明内容
为解决上述问题,本发明提供一种面向搜索引擎优化的前端代码自动修复方法,能够对网页地址中的静态资源进行分析,对HTML、CSS、JS不同语言的核心文件进行针对性修复、优化处理,使其满足搜索引擎优化标准,最终输出优化后的代码文件、修改记录以及预警日志。
为了实现上述发明目的,本发明采取如下技术方案:
一种面向搜索引擎优化的前端代码自动修复方法,适于在计算设备上运行,与现有技术不同的是,该方法包括:
步骤1:对需要优化的目标网页关联的所有静态资源进行访问,将HTML文件、CSS文件和JS文件记录到拟进行优化的数组中,将丢失或异常的资源记录到禁止引用的数组中并抛出丢失预警;
步骤2:对经过步骤1得到的拟进行优化的文件进行分类汇总,按照HTML文件、CSS层叠样式表、JS脚本文件的类别顺序进行分组,形成待处理队列,等待执行不同校验修复程序;
步骤3:对HTML文件进行校验修复,遍历解析HTML代码,补齐缺失的HTML标签,对存在层级关系的标签进行遍历校验,删除层级关系错误的节点,替换为基础容器标签,将未按照SEO优化标准的部分进行优化;
步骤4:对CSS层叠样式表文件进行校验,完成CSS浏览器私有属性的补充,将HTML中的CSS样式移植到CSS文件中,通过提高加载速度的方式,进一步提升搜索引擎优化程度;
步骤5:对JS脚本文件进行监听,添加容错及预警机制;
步骤6:将使用过程中的所有异常进行汇总,记录抛出异常的文件,行号,预警类别,建议处理方式,最终输出到本地;
步骤7:将修复后的文件替换原文件,并按照原始目录结构输出,方便开发人员进行复查和替换;
步骤8:将使用过程中的所有操作记录进行汇总,记录修复的文件、行号、修复内容、修复类别,最终输出到本地。
进一步地,步骤3中的将未按照SEO优化标准的部分进行优化具体是:
3-1、将非标准的标签进行替换,将淘汰的标签进行剔除,删除用于修改样式的标签,校验纯文本,使其包裹在文本标签中;
3-2、判断TDK的完整性,若缺失或不完整,抛出预警;
3-3、h1标签出现频率控制在1次,多余标签进行删除;
3-4、对图片、音频这类的资源型标签进行遍历,结合上下文,补充缺失的title属性,并抛出预警;
3-5、剔除与步骤1中的禁止引用数组重合的资源调用;
3-6、对a链接进行遍历,保证a链接的出现形式是http://域名/固定链接/,补充缺失的title属性,抛出预警;对无链接,指向本页面的链接添加nofollow属性。
进一步地,步骤6中的预警类别包括人工干预、预警和优化。
进一步地,步骤8中的修复类别包括标签替换、标签删除、属性添加、属性删除、兼容处理和监听容错。
与现有技术相比,本发明的有益效果在于:
本发明不局限于进行简单地代码标签修复,只保证代码正确的网页已无法在日渐繁荣的互联网领域中占据优势,本发明将核心功能放在能够显著提升网站质量的搜索引擎优化方面,整体提升网站质量。
本发明可一站式解决前端三大语言的搜索引擎优化问题,将可通过编程语言解决的问题进行自动修复处理,减少人工成本的投入。
本发明对非错误型问题进行提示,对需要人工处理的问题进行预警,分级别输出处理结果,给开发人员提供最直接的修改参考和指引建议;对修复的问题进行记录,优化点可视化展示,多维度展示代码修复过程。
处理后的文件下载到本机,仿原网址的目录结构,方便进行文件替换。
具体实施方式
下面通过具体实施例,对本发明进一步详细说明。以下实施例用于说明本发明,但不能用来限制本发明。
步骤1:对需要优化的目标网页关联的所有静态资源进行访问,将HTML文件,CSS文件,JS文件记录到可进行优化的数组中。
通过对资源进行请求response=requests.get(url,params=headers),获得请求状态:
若response.status_code!=200,说明静态文件可能存在丢失或异常的情况;
若response.status_code==404,说明存在异常的资源记录,将该资源记录到禁止引用的数组中,并抛出丢失预警。
步骤2:通过正则匹配文件类型:
html_name_model = '.*/(.*
css_name_model = '.*/(.*
js_name_model = '.*/(.*
将HTML文件、CSS层叠样式表、JS脚本文件按照类别进行分组,形成待处理队列,等待执行不同校验修复程序。
步骤3:对HTML文件进行校验修复,遍历解析HTML代码,补齐缺失的HTML标签,基本规则为:
"
"
"
"内容"为异常标签,缺失开始标签;
对存在层级关系的标签进行遍历校验,删除层级关系错误的节点,替换为基础容器标签。
将未按照SEO优化标准的部分进行优化。
3-1、将非标准的标签进行替换,删除用于修改样式的标签,例如已经淘汰的
3-2、TDK完整性判断,TDK应包含:
获取TDK信息:
title = PyQuery(req.text)('title').text();
keywords = PyQuery(req.text)('[name=keywords]').attr('content');
description = PyQuery(req.text)('[name=description]').attr('content');
若缺失或不完整,抛出预警。
3-3、获取H1标签信息:h1 = req('h1'),控制出现频率控制在1次,多余标签进行删除,并抛出预警。
3-4、对图片、音频类的资源型标签进行遍历,结合上下文,通过.attr(title,value)补充缺失的title属性,并抛出预警。
3-5、剔除与步骤1中的禁止引用数组重合的资源调用。
3-6、对a链接进行匹配遍历:preg_match_all('/href="(.*
$ori = $matches[0][$i];
$matches[0][$i] = str_replace('href', 'rel="nofollow" href', $matches[0][$i]);
$html = str_replace($ori, $matches[0][$i], $html)。
步骤4:对CSS层叠样式表文件进行校验,补充CSS浏览器私有属性,添加代表各个浏览器的私有前缀,如-moz代表firefox浏览器私有属性,-ms代表IE浏览器私有属性,-webkit代表chrome、safari私有属性,-o代表opera私有属性。并保证兼容写法在前,标准写法在后。通过PyQuery(req.text)('style')的方法将HTML中的CSS样式移植到CSS文件中,通过提高加载速度的方式,进一步提升搜索引擎优化程度。
步骤5:通过window的error事件,监听静态资源加载出错或者JS文件执行过程中的错误;使用unhandledrejection事件进行Promise异常捕获。
步骤6:创建异常问题汇总文件:
errorFile = xlwt.Workbook();
errorSheet = errorFile.add_sheet('异常问题汇总');
file_name = '{}.xls'.format('异常问题汇总'); save(file_name)。
将使用过程中的所有异常进行汇总,记录抛出异常的文件,行号,预警类别(人工干预、预警、优化),建议处理方式,最终输出到本地。
步骤7:将修复后的文件替换原文件,并通过urllib.request.urlretrieve方法将修复后的文件按照原始目录结构输出,方便开发人员进行复查和替换。
步骤8:同步骤6的操作,将使用过程中的所有操作记录进行汇总,记录修复的文件、行号、修复内容、修复类别(标签替换、标签删除、属性添加、属性删除、兼容处理、监听容错),最终输出到本地。
以上实施例仅为本发明的技术方案而非对其限制,应当指出,对于本技术领域的技术人员来说,在不脱离本发明技术原理的前提下,还可以对本发明的具体实施方式进行修改或等同替换,而未脱离本发明精神和范围的任何修改或等同替换,其均应涵盖在本发明的权利要求范围当中。
机译: 自动化系统控制程序中的面向对象程序代码的运行时修改,方法是使用修改后的汇编代码修改存储的汇编代码,并在机器代码转换之前对修改进行适应
机译: 通过自动可视化代码表达,统一代码执行和可自动分配编码结果的驱动设备的面向实践的学习方法
机译: 一种在正在运行的面向对象程序中替换代码的方法