发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种检测效率高、检测精准度高的门户网站异常超链接的检测方法、装置、设备及介质。
本发明的目的可以通过以下技术方案来实现:
根据本发明的第一方面,提供了一种门户网站异常超链接的检测方法,该方法包括:
步骤101)获取门户网站中所有超链接;
步骤102)对超链接进行解析请求,筛选出存在异常的超链接;
步骤103)完成对出错所在网页的登记,错误链接位置标识以及错误原因的捕获记录,生成测试报告。
作为优选的技术方案,所述的步骤101)具体为:
步骤1011)获取门户网站的HTML信息;
步骤1012)对HTML信息进行解析,并判断是否存在超链接,若存在,获取完整的URL链接。
作为优选的技术方案,所述的步骤1011)具体为:
通过Python编码,以多线程并发的方式对需要爬取的门户网站进行访问请求,并获取该门户网站的最终HTML信息。
作为优选的技术方案,所述的步骤1012)具体为:
在获取到门户网站的HTML后,使用Python-BeautifulSoup第三方类库,获取到对应HTML中所有<a>标签,并进行数据解析,判断<a>标签中是否存在超链接,若存在超链接,则通过urlparse方法,获取到完整的URL链接并存到缓存数据。
作为优选的技术方案,所述的步骤102)具体包括:
1021)对所有URL进行去重;
1022)对解析出来的超链接进行HTTP GET请求,通过响应判断链接是否访问正常,若出现异常链接,记录对应的<a>标签、链接、链接来源、链接位置信息。
作为优选的技术方案,所述的步骤103)中的测试报告的字段包含爬取的门户网站链接、网站名称、获取到的异常超链接、异常超链接所在的坐标位置以及局部截图、异常原因、爬取的时间点信息。
作为优选的技术方案,该方法在报告中,对异常超链接位置进行了精准的局部截图,具体的截图过程为:将浏览器大小修改为Xpath同等大小,并通过JS方法移动滚动条到对应Xpath位置,进行截图。
根据本发明的第二方面,提供了一种门户网站异常超链接的检测装置,该装置包括:
超链接获取模块,用于获取门户网站中所有超链接;
异常超链接筛选模块,用于对超链接进行解析请求,筛选出存在异常的超链接;
测试报告生成模块,用于完成对出错所在网页的登记,错误链接位置标识以及错误原因的捕获记录,生成测试报告。
根据本发明的第三方面,提供了一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现所述的方法。
根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现所述的方法。
与现有技术相比,本发明具有以下优点:
1)本发明通过页面爬虫技术以及web自动化测试技术,将需要检测的门户网站进行可配置,如果发现异常链接,可以做到门户网站中局部位置截图,让运营人员立即发现异常位置,以便于快速对配置进行替换;
2)本发明测试效率高,通过多线程并发的方式,大大提高了测试效率;
3)本发明为了让运营人员与研发人员根据直观的了解异常超链接所在位置,在报告中,还对异常超链接位置进行了精准的局部截图,使报告更有可读性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
如图1所示,本发明一种门户网站异常超链接的检测方法,该方法包括:
步骤S101)获取门户网站中所有超链接;
步骤S102)对超链接进行解析请求,筛选出存在异常的超链接;
步骤S103)完成对出错所在网页的登记,错误链接位置标识以及错误原因的捕获记录,生成测试报告。
如图2、10所示,为本发明主要流程图,包括一下步骤:
首先通过Jenkins进行服务定时调度,并通过Django服务获取到需要执行的门户网站链接、以及网站对应名称,将其放到列表中,
如图4所示,通过Python编码,以多线程并发的方式对需要爬取的门户网站进行访问请求,并获取该门户网站的最终HTML信息;
如图3所示,在获取到门户网站的HTML后,会使用Python-BeautifulSoup第三方类库,通过相关编码,获取到对应HTML中所有<a>标签,并进行数据解析,判断<a>标签中是否存在超链接,若存在超链接,则通过urlparse等方法,获取到完整的URL链接并存到缓存数据。
如图5所示,在获取到门户网站中所有超链接完整的URL后,首先对所有URL进行去重,然后使用获取门户网站相同session,在对应门户网站爬取的相关线程中,通过HTTPGET请求,对在缓存中所有的URL链接数据进行访问,若访问接口响应码不为200,则记录到异常链接列表中,异常链接列表保存原始门户网站地址和名称、异常链接完整地址、异常链接完整对应<a>标签、异常原因等相关信息,其中异常原因为响应码不为200,并记录当前获取到的响应码;若访问接口响应码为200,则判断是否存在预设的异常响应文本,若存在,仍然保存上述相关内容信息,并记录异常原因为存在预设的异常响应内容,若不存在则当前链接无异常,不需要记录到异常链接列表中。
如图6所示,当门户网站所以异常链接被记录之后,通过Xpath模糊匹配<a>标签,再通过基于Python的selenium第三方类库,启动WebDriver服务,访问门户完整链接,根据find_elements_by_xpath方法,获取到所有拥有此超链接的Xpath元素定位。
如图7所示,在通过find_elements_by_xpath获取的Xpath元素后,再selenium中location方法获取到Xpath的左上角的位置,左下角的位置,右上角的位置,右下角的位置,通过这四个坐标点,计算出对应Xpath的大小。为了将对应Xpath进行截图,将浏览器大小通过set_window_size的方法进行修改,修改为和Xpath相同的大小,再通过execute_script方法调用JS中scrollIntoView方法,将滚动条滚动到对应Xpath的位置,并调整滚动条占用的宽度,这样浏览器的整个页面就是异常链接Xpath的页面,最后,通过save_screenshot截图,截下来的图片即为异常Xpath超链接的位置,将图片路径加入到异常链接列表对应数据中,以便于后续报告的输出。
如图8所示,在完成所有门户完整对异常链接的爬取及判断后,再通过Python编码,编写HTML相关模板,再将异常链接爬取数据导入到对应模板中,生成HTML报告,报告中包括字段门户网站链接、门户网站名称、异常超链接、异常超链接位置、异常超链接位置截图、异常超链接发现时间等信息,并将报告链接发送给指定人员进行排查。
如图9所示,本发明会在Django-admin后台服务中,进行维护需要爬取的门户网站,配置需要爬取门户网站的地址、名称、开启状态、爬取频率等。
如图10所示,根据门户网站在Django-admin中的配置,来通Jenkins进行任务调度,定时执行页面爬取工作。
以上是关于方法实施例的介绍,以下通过装置实施例,对本发明所述方案进行进一步说明。
本发明一种门户网站异常超链接的检测装置,该装置包括:
超链接获取模块,用于获取门户网站中所有超链接;
异常超链接筛选模块,用于对超链接进行解析请求,筛选出存在异常的超链接;
测试报告生成模块,用于完成对出错所在网页的登记,错误链接位置标识以及错误原因的捕获记录,生成测试报告。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明电子设备包括中央处理单元(CPU),其可以根据存储在只读存储器(ROM)中的计算机程序指令或者从存储单元加载到随机访问存储器(RAM)中的计算机程序指令,来执行各种适当的动作和处理。在RAM中,还可以存储设备操作所需的各种程序和数据。CPU、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。
设备中的多个部件连接至I/O接口,包括:输入单元,例如键盘、鼠标等;输出单元,例如各种类型的显示器、扬声器等;存储单元,例如磁盘、光盘等;以及通信单元,例如网卡、调制解调器、无线通信收发机等。通信单元允许设备通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元执行上文所描述的各个方法和处理,例如方法S101~S103。例如,在一些实施例中,方法S101~S103可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元。在一些实施例中,计算机程序的部分或者全部可以经由ROM和/或通信单元而被载入和/或安装到设备上。当计算机程序加载到RAM并由CPU执行时,可以执行上文描述的方法S101~S103的一个或多个步骤。备选地,在其他实施例中,CPU可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法S101~S103。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、负责可编程逻辑设备(CPLD)等等。
用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。