专利名称:页面内容爬取方法、装置、存储介质及设备
专利类型:实用新型专利
专利申请号:CN201910935533.1
专利申请(专利权)人:北京国双科技有限公司
权利人地址:北京市海淀区北四环中路229号海泰大厦4层南401号
专利发明(设计)人:满悦
专利摘要:本公开涉及一种页面内容爬取方法、装置、存储介质及设备,所述方法包括:确定可视区域的显示高度和加载的目标页面的当前页面长度;根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示,其中,所述目标页面滚动至所述目标位置时,所述目标页面未加载新的数据;爬取所述目标页面中已在所述可视区域中进行显示且未被爬取的数据,并将爬取到的数据存储至页面数据集合。由此,可以对目标页面的内容数据进行准确爬取。
主权利要求:
1.一种页面内容爬取方法,其特征在于,所述方法包括:
确定可视区域的显示高度和加载的目标页面的当前页面长度;
根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示,其中,所述目标页面滚动至所述目标位置时,所述目标页面未加载新的数据;
爬取所述目标页面中已在所述可视区域中进行显示且未被爬取的数据,并将爬取到的数据存储至页面数据集合;
其中,所述根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示,包括:控制所述目标页面以所述显示高度为滚动距离进行滚动,以使所述目标页面在所述可视区域中显示时加载与所述可视区域对应的数据;
重新检测所述目标页面的当前页面长度,并根据重新检测到的所述目标页面的当前页面长度和所述目标页面的已滚动距离,确定目标页面是否滚动至所述目标位置;
若所述目标页面未滚动至所述目标位置,在预设时段后,重新返回所述控制所述目标页面以所述显示高度为滚动距离进行滚动的步骤,直至所述目标页面滚动至所述目标位置。
2.根据权利要求1所述的方法,其特征在于,在所述爬取所述目标页面中已在所述可视区域中进行显示且未被爬取的数据,并将爬取到的数据存储至页面数据集合的步骤之后,所述方法还包括:控制所述目标页面滚动,并在所述目标页面在所述可视区域中已全部显示时,确定所述目标页面是否加载新的数据;
若所述目标页面未加载新的数据,爬取所述目标页面中从所述目标位置之后滚动至所述目标页面全部显示对应的显示数据,并将所述显示数据存储至所述页面数据集合。
3.根据权利要求2所述的方法,其特征在于,在所述确定所述目标页面是否加载新的数据的步骤之后,所述方法还包括:若确定所述目标页面加载了新的数据,则重新检测所述目标页面的当前页面长度,并根据重新检测到的目标页面的当前页面长度返回所述根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示的步骤。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
记录所述目标页面的数据加载次数,其中,所述数据加载次数初始为零,并在确定所述目标页面加载了新的数据时执行加一操作;
确定所述数据加载次数是否小于预设阈值;
若所述数据加载次数小于预设阈值,则执行所述在所述目标页面在所述可视区域中已全部显示时,确定所述目标页面是否加载新的数据的步骤;
若所述数据加载次数不小于所述预设阈值,则在所述目标页面在所述可视区域中已全部显示时,爬取所述目标页面中从所述目标位置之后滚动至所述目标页面全部显示对应的显示数据,并将所述显示数据存储至所述页面数据集合。
5.根据权利要求1所述的方法,其特征在于,所述根据重新检测到的所述目标页面的当前页面长度和所述目标页面的已滚动距离,确定目标页面是否滚动至所述目标位置,包括:确定所述重新检测到的所述目标页面的当前页面长度减去所述目标页面的已滚动距离并减去所述显示高度后所得的目标长度是否大于所述显示高度;
若所述目标长度不大于所述显示高度,确定所述目标页面滚动至所述目标位置。
6.一种页面内容爬取装置,其特征在于,所述装置包括:
第一确定模块,用于确定可视区域的显示高度和加载的目标页面的当前页面长度;
滚动模块,用于根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示,其中,所述目标页面滚动至所述目标位置时,所述目标页面未加载新的数据;
第一爬取模块,用于爬取所述目标页面中已在所述可视区域中进行显示且未被爬取的数据,并将爬取到的数据存储至页面数据集合;
其中,所述滚动模块包括:
控制子模块,用于控制所述目标页面以所述显示高度为滚动距离进行滚动,以使所述目标页面在所述可视区域中显示时加载与所述可视区域对应的数据;
第一确定子模块,用于重新检测所述目标页面的当前页面长度,并根据重新检测到的所述目标页面的当前页面长度和所述目标页面的已滚动距离,确定目标页面是否滚动至所述目标位置;
触发子模块,用于在所述目标页面未滚动至所述目标位置的情况下,在预设时段后,触发所述控制子模块控制所述目标页面以所述显示高度为滚动距离进行滚动,直至所述目标页面滚动至所述目标位置。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于控制所述目标页面滚动,并在所述目标页面在所述可视区域中已全部显示时,确定所述目标页面是否加载新的数据;
第二爬取模块,用于在所述目标页面未加载新的数据的情况下,爬取所述目标页面中从所述目标位置之后滚动至所述目标页面全部显示对应的显示数据,并将所述显示数据存储至所述页面数据集合。
8.一种存储介质,其上存储有程序,其特征在于,该程序被处理器执行时实现权利要求
1‑5中任一项所述方法的步骤。
9.一种电子设备,其特征在于,所述设备包括:
至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;
其中,所述处理器、所述存储器通过所述总线完成相互间的通信;
所述处理器用于调用所述存储器中的程序指令,以执行权利要求1‑5中任一项所述方法的步骤。 说明书 : 页面内容爬取方法、装置、存储介质及设备技术领域[0001] 本公开涉及页面内容处理领域,具体地,涉及一种页面内容爬取方法、装置、存储介质及设备。背景技术[0002] 随着web技术及爬虫技术发展,很多长网页需要进行多次滚动才能在显示设备的可视区域中进行显示。因此,网站开始使用页面数据懒加载的方式对长网页进行显示,即在该长网页的页面初次加载时对页面数据进行缓存,在部分页面在该可视区域中显示时,再从该缓存的页面数据中加载该可视区域内的部分页面的数据(即,数据按需加载),从而进行显示。[0003] 现有技术中,在对上述方式显示的长网页的页面内容数据进行爬取时,通常是确定出该长网页的当前页面长度,通过对长页面一次滚动(从长页面头部滚动至页面底部)获取页内容数据,在通过上述滚动方式爬取该长页面的数据时,无法保证在长页面滚动的过程中数据按需加载是否成功,从而使得爬取到的页面数据不完整。发明内容[0004] 本公开的目的是提供一种可以页面的内容数据进行准确爬取的页面内容爬取方法、装置、存储介质及设备。[0005] 为了实现上述目的,根据本公开的第一方面,提供一种页面内容爬取方法,所述方法包括:[0006] 确定可视区域的显示高度和加载的目标页面的当前页面长度;[0007] 根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示,其中,所述目标页面滚动至所述目标位置时,所述目标页面未加载新的数据;[0008] 爬取所述目标页面中已在所述可视区域中进行显示且未被爬取的数据,并将爬取到的数据存储至页面数据集合。[0009] 可选地,在所述爬取所述目标页面中已在所述可视区域中进行显示且未被爬取的数据,并将爬取到的数据存储至页面数据集合的步骤之后,所述方法还包括:[0010] 控制所述目标页面滚动,并在所述目标页面在所述可视区域中已全部显示时,确定所述目标页面是否加载新的数据;[0011] 若所述目标页面未加载新的数据,爬取所述目标页面中从所述目标位置之后滚动至所述目标页面全部显示对应的显示数据,并将所述显示数据存储至所述页面数据集合。[0012] 可选地,在所述确定所述目标页面是否加载新的数据的步骤之后,所述方法还包括:[0013] 若确定所述目标页面加载了新的数据,则重新检测所述目标页面的当前页面长度,并根据重新检测到的目标页面的当前页面长度返回所述根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示的步骤。[0014] 可选地,所述方法还包括:[0015] 记录所述目标页面的数据加载次数,其中,所述数据加载次数初始为零,并在确定所述目标页面加载了新的数据时执行加一操作;[0016] 确定所述数据加载次数是否小于预设阈值;[0017] 若所述数据加载次数小于预设阈值,则执行所述在所述目标页面在所述可视区域中已全部显示时,确定所述目标页面是否加载新的数据的步骤;[0018] 若所述数据加载次数不小于所述预设阈值,则在所述目标页面在所述可视区域中已全部显示时,爬取所述目标页面中从所述目标位置之后滚动至所述目标页面全部显示对应的显示数据,并将所述显示数据存储至所述页面数据集合。[0019] 可选地,所述根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示,包括:[0020] 控制所述目标页面以所述显示高度为滚动距离进行滚动,以使所述目标页面在所述可视区域中显示时加载与所述可视区域对应的数据;[0021] 重新检测所述目标页面的当前页面长度,并根据重新检测到的所述目标页面的当前页面长度和所述目标页面的已滚动距离,确定目标页面是否滚动至所述目标位置;[0022] 若所述目标页面未滚动至所述目标位置,在预设时段后,重新返回所述控制所述目标页面以所述显示高度为滚动距离进行滚动的步骤,直至所述目标页面滚动至所述目标位置。[0023] 可选地,所述根据重新检测到的所述目标页面的当前页面长度和所述目标页面的已滚动距离,确定目标页面是否滚动至所述目标位置,包括:[0024] 确定所述重新检测到的所述目标页面的当前页面长度减去所述目标页面的已滚动距离并减去所述显示高度后所得的目标长度是否大于所述显示高度;[0025] 若所述目标长度不大于所述显示高度,确定所述目标页面滚动至所述目标位置。[0026] 根据本公开的第二方面,提供一种页面内容爬取装置,所述装置包括:[0027] 第一确定模块,用于确定可视区域的显示高度和加载的目标页面的当前页面长度;[0028] 滚动模块,用于根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示,其中,所述目标页面滚动至所述目标位置时,所述目标页面未加载新的数据;[0029] 第一爬取模块,用于爬取所述目标页面中已在所述可视区域中进行显示且未被爬取的数据,并将爬取到的数据存储至页面数据集合。[0030] 可选地,所述装置还包括:[0031] 第二确定模块,用于控制所述目标页面滚动,并在所述目标页面在所述可视区域中已全部显示时,确定所述目标页面是否加载新的数据;[0032] 第二爬取模块,用于在所述目标页面未加载新的数据的情况下,爬取所述目标页面中从所述目标位置之后滚动至所述目标页面全部显示对应的显示数据,并将所述显示数据存储至所述页面数据集合。[0033] 可选地,所述装置还包括:[0034] 检测模块,用于在确定所述目标页面加载了新的数据的情况下,重新检测所述目标页面的当前页面长度,并根据重新检测到的目标页面的当前页面长度触发所述滚动模块根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示。[0035] 可选地,所述装置还包括:[0036] 记录模块,用于记录所述目标页面的数据加载次数,其中,所述数据加载次数初始为零,并在确定所述目标页面加载了新的数据时执行加一操作;[0037] 第三确定模块,用于确定所述数据加载次数是否小于预设阈值;[0038] 所述第二确定模块用于在所述数据加载次数小于预设阈值的情况下,执行所述在所述目标页面在所述可视区域中已全部显示时,确定所述目标页面是否加载新的数据;[0039] 第三爬取模块,用于在所述数据加载次数不小于所述预设阈值的情况下,在所述目标页面在所述可视区域中已全部显示时,爬取所述目标页面中从所述目标位置之后滚动至所述目标页面全部显示对应的显示数据,并将所述显示数据存储至所述页面数据集合。[0040] 可选地,所述滚动模块包括:[0041] 控制子模块,用于控制所述目标页面以所述显示高度为滚动距离进行滚动,以使所述目标页面在所述可视区域中显示时加载与所述可视区域对应的数据;[0042] 第一确定子模块,用于重新检测所述目标页面的当前页面长度,并根据重新检测到的所述目标页面的当前页面长度和所述目标页面的已滚动距离,确定目标页面是否滚动至所述目标位置;[0043] 触发子模块,用于在所述目标页面未滚动至所述目标位置的情况下,在预设时段后,触发所述控制子模块控制所述目标页面以所述显示高度为滚动距离进行滚动,直至所述目标页面滚动至所述目标位置。[0044] 可选地,所述第一确定子模块包括:[0045] 第二确定子模块,用于确定所述重新检测到的所述目标页面的当前页面长度减去所述目标页面的已滚动距离并减去所述显示高度后所得的目标长度是否大于所述显示高度;[0046] 第三确定子模块,用于在所述目标长度不大于所述显示高度的情况下,确定所述目标页面滚动至所述目标位置。[0047] 根据本公开的第三方面,提供一种存储介质,其上存储有程序,该程序被处理器执行时实现上述第一方面任一所述方法的步骤。[0048] 根据本公开的第四方面,提供一种设备,所述设备包括:[0049] 至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;[0050] 其中,所述处理器、所述存储器通过所述总线完成相互间的通信;[0051] 所述处理器用于调用所述存储器中的程序指令,以执行上述第一方面任一所述方法的步骤。[0052] 在上述技术方案中,确定可视区域的显示高度和加载的目标页面的当前页面长度,并根据目标页面的当前页面长度,控制目标页面以显示高度为滚动距离依次进行滚动,以使目标页面滚动至目标位置,并在可视区域中对所述目标页面进行显示,由此可以保证页面滚动过程中,数据按需加载的准确性。并且,在目标页面滚动到目标位置时进行页面数据爬取,从而以保证爬取到的页面数据的完整性和有序性,并且可以有效降低数据爬取的次数,提高页面内容爬取效率。[0053] 本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。附图说明[0054] 附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:[0055] 图1是根据本公开的一种实施方式提供的页面内容爬取方法的流程图;[0056] 图2是根据本公开的一种实施方式提供的根据目标页面的当前页面长度,控制目标页面以显示高度为滚动距离依次进行滚动,以使目标页面滚动至目标位置,并在可视区域中对目标页面进行显示的一种示例性实现方式的流程图;[0057] 图3是根据本公开的一种实施方式提供的目标页面的显示示意图;[0058] 图4是根据本公开的另一种实施方式提供的目标页面的显示示意图;[0059] 图5是根据本公开的另一种实施方式提供的目标页面的显示示意图;[0060] 图6是根据本公开的另一种实施方式提供的目标页面的显示示意图;[0061] 图7是根据本公开的一种实施方式提供的页面内容爬取装置的框图;[0062] 图8是根据本公开的一种实施方式提供的设备的框图。具体实施方式[0063] 以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。[0064] 为了使本领域技术人员更容易理解本发明实施例提供的技术方案,下面首先对涉及到的相关技术进行简单介绍。[0065] 相关技术中,对需要多次滚动才能够完全显示的长页面,为了避免在页面显示过程中与服务器的多次交互,会在初次加载该长页面时,同时缓存该长页面对应的多屏数据。随着长页面滚动位置的变化,在每个滚动位置,会在对应的可视区域中加载并显示该屏对应的数据,从而使得数据按需加载,不会过度占用服务器资源。因此,在该长页面初次显示时,会显示其首屏数据;在对长页面进行滚动时,例如,将该长页面滚动至第二屏时,可以从该长页面缓存的数据中按需加载用于显示第二屏内容的数据,数据按需加载时,该页面不会加载其他新的数据。当长页面缓存的数据已全部显示时,目标页面数据会产生请求流量,若长页面还有待加载的数据,该则产生请求流量不为零,此时该长页面则会加载到新的数据,从而可以继续滚动显示,则此次加载为数据有效加载。由此,可以有效提高响应时间并降低对服务器端的资源占用。[0066] 如上所述,数据按需加载和数据有效加载都会使得当前页面长度增加。因此在现有技术中,通过对长页面一次滚动(从长页面头部滚动至页面底部)获取页内容数据时,无法保证该滚动过程中数据按需加载是否成功,从而使得爬取到的页面数据不完整。[0067] 为了解决上述问题,本公开提供一种页面内容爬取方法。图1所示,为根据本公开的一种实施方式提供的页面内容爬取方法的流程图,如图1所示,所述方法可以包括:[0068] 在S11中,确定可视区域的显示高度和加载的目标页面的当前页面长度。其中,在目标页面的页面长度大于显示高度时,该目标页面需要进行多次滚动才可完全在可视区域进行显示。由上文所述可知,在目标页面滚动的过程中,在数据按需加载和数据有效加载的影响下,目标页面滚动到不同的显示位置时对应的当前页面长度可能是不同的。[0069] 其中,可视区域可以是设备中的显示区域,如显示器的显示界面,则该显示高度即为对应的显示区域的高度,该显示高度可以通过获取设备的硬件参数确定。加载的目标页面的当前页面长度为该目标页面初次加载时确定出的页面长度,其中确定当前页面长度的方式为现有技术,在此不再赘述。[0070] 在S12中,根据目标页面的当前页面长度,控制目标页面以显示高度为滚动距离依次进行滚动,以使目标页面滚动至目标位置,并在可视区域中对目标页面进行显示,其中,所述目标页面滚动至所述目标位置时,所述目标页面未加载新的数据。[0071] 在该实施例中,在控制目标页面滚动时,以显示高度为滚动距离,可以使得该目标页面每滚动一次时滚动一屏数据,从而避免现有技术中从页面头部一次性滚动到页面底部导致的数据按需加载不完整的问题。并且,在该控制目标页面滚动至目标位置的过程中,在可视区域中对目标页面进行显示时,目标页面未加载新的数据,则可视区域中显示的页面内容对应的数据加载都是通过数据按需加载实现的。[0072] 需要说明的是,当目标页面滚动至目标位置时,目标页面并不会加载新的数据,但是继续滚动目标页面,将可能会加载新的数据,也可能不加载新的数据。[0073] 在S13中,爬取目标页面中已在可视区域中进行显示且未被爬取的数据,并将爬取到的数据存储至页面数据集合,则页面数据集合中的数据即为从该目标页面中爬取的页面内容。[0074] 其中,爬取目标页面中已在可视区域中进行显示且未被爬取的数据可以通过如下方式实现。示例地,在对目标页面的数据进行初次爬取时,可以直接爬取目标页面中已在可视区域中进行显示的数据,同时可以记录已爬取的数据对应的爬取位置。之后,在再次对目标页面的数据进行爬取时,则可以爬取目标页面中已在可视区域中进行显示且处于该爬取位置之后的数据,并更新爬取位置。由此,一方面可以对页面数据进行快速爬取,另一方面也可以有效避免爬取冗余的页面数据,有效降低数据爬取量和数据存储量。[0075] 在上述技术方案中,确定可视区域的显示高度和加载的目标页面的当前页面长度,并根据目标页面的当前页面长度,控制目标页面以显示高度为滚动距离依次进行滚动,以使目标页面滚动至目标位置,并在可视区域中对所述目标页面进行显示,由此可以保证页面滚动过程中,数据按需加载的准确性。并且,在目标页面滚动到目标位置时进行页面数据爬取,从而以保证爬取到的页面数据的完整性和有序性,并且可以有效降低数据爬取的次数,提高页面内容爬取效率。[0076] 可选地,在所述爬取目标页面中已在可视区域中进行显示且未被爬取的数据,并将爬取到的数据存储至页面数据集合的步骤13之后,所述方法还包括:[0077] 控制目标页面滚动,并在目标页面在可视区域中已全部显示时,确定所述目标页面是否加载新的数据。[0078] 示例地,在目标页面在可视区域中已全部显示后,等待该目标页面的产生请求流量完成后对目标页面进行数据爬取。若此时爬取到新的数据,则确定目标页面加载了新的数据,若此时未爬取到新的数据,则确定目标页面未加载新的数据。[0079] 若目标页面未加载新的数据,爬取目标页面中从目标位置之后滚动至目标页面全部显示对应的显示数据,并将显示数据存储至页面数据集合。[0080] 若目标页面未加载新的数据,则表示该目标页面当前无新的数据展示,此时爬取目标页面中从目标位置之后滚动至目标页面全部显示对应的显示数据,即爬取目标页面中已显示且尚未被爬取的数据。示例地,可以根据记录的爬取位置,爬取从该爬取位置至目标页面的最底端位置对应的数据。[0081] 示例地,可以对页面数据集合中的数据进行合并以确定目标页面的内容数据。例如,可以根据数据的爬取时间由早至晚的顺序进行合并,又例如,可以根据数据的爬取位置由前至后的顺序进行合并。其中,爬取位置越靠近页面头部,爬取位置越前。[0082] 在上述技术方案中,在目标页面数据完全显示且未加载新的数据时,再次进行数据爬取,从而对目标页面的剩余内容数据进行爬取。通过上述技术方案,一方面可以便于对目标页面的内容数据进行精确爬取。另一方面,可以保证目标页面的内容数据爬取的完整性,提高页面内容爬取方法的适用范围,同时为基于内容数据进行的后续分析提供准确的数据支持。[0083] 可选地,在S12中,根据目标页面的当前页面长度,控制目标页面以显示高度为滚动距离依次进行滚动,以使目标页面滚动至目标位置,并在可视区域中对目标页面进行显示的一种示例性实现方式如下,如图2所示,该步骤可以包括:[0084] 在S21中,控制目标页面以显示高度为滚动距离进行滚动,以使目标页面在可视区域中显示时加载与可视区域对应的数据。[0085] 在该实施例中,在控制目标页面滚动时,以显示高度为滚动距离,可以使得该目标页面每滚动一次时滚动一屏数据,与可视区域对应的数据为目标页面在可视区域显示的页面部分所需的数据。[0086] 在S22中,重新检测目标页面的当前页面长度,并根据重新检测到的目标页面的当前页面长度和目标页面的已滚动距离,确定目标页面是否滚动至目标位置。[0087] 其中,目标页面被加载后首次显示时如图3所示,其中,D为可视区域对应的滚动条。由于目标页面的当前页面长度L1大于显示高度H,所以图3中目标页面的A部分需要对目标页面进行滚动才能显示。在控制目标页面以显示高度为滚动距离进行滚动后,目标页面的显示示意图如图4所示,其中,目标页面中的B部分为已经滚动显示过的部分,即图3中位于可视区域C的部分。[0088] 由上文所述,在数据按需加载的过程中,若图片在可视区域C中显示,则对该图片按需加载后,当前页面长度可能会增加,此时则需要重新检测该当前页面长度,如图4所示,重新检测到的目标页面的当前页面长度为L2。[0089] 可选地,所述根据重新检测到的目标页面的当前页面长度和目标页面的已滚动距离,确定目标页面是否滚动至目标位置的一种示例性实现方式如下,包括:[0090] 确定所述重新检测到的所述目标页面的当前页面长度减去所述目标页面的已滚动距离并减去所述显示高度后所得的目标长度是否大于所述显示高度;[0091] 若所述目标长度不大于所述显示高度,确定所述目标页面滚动至所述目标位置。[0092] 其中,目标页面的已滚动距离为目标页面执行各次滚动对应的滚动距离之和,如图4所示,当目标页面滚动一次,即从图3所示界面滚动至图4所示界面时,目标页面的已滚动距离为M,此时M等于H,则该目标长度N用于表示目标页面中尚未进行显示的页面内容对应的长度。[0093] 当目标长度大于显示高度时,表示目标页面再滚动一次仍不能够全部显示,当目标长度小于显示高度时,则表示目标页面再滚动一次可能进行全部显示。由此,可以准确控制目标页面的滚动位置,并在目标页面再滚动一次则能够全部显示时停止滚动并进行数据爬取,从而可以对目标页面中数据按需加载的部分对应数据一次性爬取,可以提高数据爬取的效率。[0094] 若目标页面未滚动至目标位置,在预设时段后,重新返回控制目标页面以显示高度为滚动距离进行滚动的步骤21,直至目标页面滚动至目标位置时暂停滚动。[0095] 其中该预设时段可以根据实际使用场景进行设置,只需要保证在该预设时段内,可视区域当前显示的页面内容对应的数据按需加载完成即可。示例地,该预设时段可以设置为50微秒。例如,控制目标页面滚动至图4所示状态时,此时目标页面未滚动至目标位置,则保持当前状态50微秒,之后控制目标页面再次以显示高度H为滚动距离进行滚动,滚动后的目标页面如图5所示。[0096] 如图5所示,目标页面的已滚动距离M为2H,确定出的目标长度N此时小于显示高度H,即确定此时目标页面滚动至目标位置,此时可以停止滚动。[0097] 在上述技术方案中,通过控制目标页面以显示高度为滚动距离进行滚动,可以使得该目标页面每滚动一次时滚动一屏数据,并可以实时检测目标页面的当前页面长度,保证控制目标页面滚动过程中数据的准确性,提高页面内容的爬取效率。[0098] 可选地,在所述确定所述目标页面是否加载新的数据的步骤之后,所述方法还包括:[0099] 若确定所述目标页面加载了新的数据,则重新检测所述目标页面的当前页面长度,并根据重新检测到的目标页面的当前页面长度返回所述根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示的步骤,即根据重新检测到的目标页面的当前页面长度控制所述目标页面以所述显示高度为滚动距离依次进行滚动。[0100] 在该实施例中,若确定目标页面加载了新的数据,则表示此次加载为数据有效加载。[0101] 接上述示例,在目标页面滚动至图5所示状态时,会爬取目标页面中已在可视区域中进行显示且未被爬取的数据,即目标页面中区域B和C对应的数据(即,已滚动显示过的三屏数据)。[0102] 在进行上述数据爬取后,控制目标页面滚动,此时目标页面可以全部显示,若确定目标页面加载了新的数据,则目标页面的当前页面长度会增加,如图6所示,重新检测的目标页面的当前页面长度为L3。之后,重新进入S12并继续执行后续步骤,以控制目标页面继续滚动并进行数据爬取。其中,S12及其后续步骤的执行方式已在上文进行详述,在此不再赘述。[0103] 在上述技术方案中,在目标页面全部显示时,确定目标页面是否加载新的数据,并在确定目标页面加载了新的数据时,控制目标页面以显示高度为滚动距离依次进行滚动,以执行后续页面显示时对应的数据按需加载,从而可以避免数据有效加载和新的数据对应的按需加载同时发生所造成的数据加载压力。同时,也可以对长页面在滚动过程中的数据按需加载进行有效区分,可以有效避免数据同时加载过多导致页面内容数据爬取中断的风险,保证页面内容爬取方法的安全性和流畅性。[0104] 可选地,所述方法还包括:[0105] 记录目标页面的数据加载次数,其中,所述数据加载次数初始为零,并在确定目标页面加载了新的数据时执行加一操作,即该数据加载次数用于表示目标页面的数据有效加载的次数。[0106] 确定所述数据加载次数是否小于预设阈值,其中,该预设阈值可以根据实际的使用场景进行设置,本公开对此不进行限定。[0107] 若所述数据加载次数小于预设阈值,则执行所述在所述目标页面在所述可视区域中已全部显示时,确定所述目标页面是否加载新的数据的步骤;[0108] 若所述数据加载次数不小于所述预设阈值,则在所述目标页面在所述可视区域中已全部显示时,爬取所述目标页面中从所述目标位置之后滚动至所述目标页面全部显示对应的显示数据,并将所述显示数据存储至所述页面数据集合。[0109] 示例地,预设阈值为2。在目标页面在图5所示状态后继续滚动至目标页面完全显示时,此时数据加载次数为其初始值零,此时数据加载次数小于预设阈值,即数据有效加载次数尚未达到上限值,此时可以确定目标页面是否加载新的数据,以便在加载到新的数据之后继续进行数据爬取。若确定目标页面加载了新的数据,则目标页面显示状态如图6所示,并对数据加载次数执行加一操作,此时数据加载次数为1。[0110] 之后,控制目标页面继续滚动,直至再次目标页面完全显示,确定数据加载次数1小于预设阈值,重新确定目标页面是否加载新的数据,并在目标页面加载了新的数据之后进行数据爬取,若确定目标页面加载了新的数据,则对数据加载次数执行加一操作,此时数据加载次数为2。[0111] 接上述示例,之后重复执行上述步骤至再次目标页面完全显示,确定数据加载次数2不小于预设阈值,此时已达到数据有效加载的次数,则可以直接爬取目标页面中从目标位置之后滚动至目标页面全部显示对应的显示数据,并将显示数据存储至页面数据集合,以获得目标页面的内容数据。其中,爬取显示数据,进而确定目标页面的内容数据的具体实施方式已在上文进行详述,在此不再赘述。[0112] 通过上述技术方案,通过记录目标页面的数据加载次数,可以在进行页面的内容数据爬取时对爬取的页面数据量进行精确控制,贴合用户的使用需求,避免爬取过量的数据对后续数据分析造成的压力,降低数据处理量。[0113] 本公开还提供一种页面内容爬取装置,如图7所示,所述装置10包括:[0114] 第一确定模块100,用于确定可视区域的显示高度和加载的目标页面的当前页面长度;[0115] 滚动模块200,用于根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示,其中,所述目标页面滚动至所述目标位置时,所述目标页面未加载新的数据;[0116] 第一爬取模块300,用于爬取所述目标页面中已在所述可视区域中进行显示且未被爬取的数据,并将爬取到的数据存储至页面数据集合。[0117] 可选地,所述装置还包括:[0118] 第二确定模块,用于控制所述目标页面滚动,并在所述目标页面在所述可视区域中已全部显示时,确定所述目标页面是否加载新的数据;[0119] 第二爬取模块,用于在所述目标页面未加载新的数据的情况下,爬取所述目标页面中从所述目标位置之后滚动至所述目标页面全部显示对应的显示数据,并将所述显示数据存储至所述页面数据集合。[0120] 可选地,所述装置还包括:[0121] 检测模块,用于在确定所述目标页面加载了新的数据的情况下,重新检测所述目标页面的当前页面长度,并根据重新检测到的目标页面的当前页面长度触发所述滚动模块根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示。[0122] 可选地,所述装置还包括:[0123] 记录模块,用于记录所述目标页面的数据加载次数,其中,所述数据加载次数初始为零,并在确定所述目标页面加载了新的数据时执行加一操作;[0124] 第三确定模块,用于确定所述数据加载次数是否小于预设阈值;[0125] 所述第二确定模块用于在所述数据加载次数小于预设阈值的情况下,执行所述在所述目标页面在所述可视区域中已全部显示时,确定所述目标页面是否加载新的数据;[0126] 第三爬取模块,用于在所述数据加载次数不小于所述预设阈值的情况下,在所述目标页面在所述可视区域中已全部显示时,爬取所述目标页面中从所述目标位置之后滚动至所述目标页面全部显示对应的显示数据,并将所述显示数据存储至所述页面数据集合。[0127] 可选地,所述滚动模块包括:[0128] 控制子模块,用于控制所述目标页面以所述显示高度为滚动距离进行滚动,以使所述目标页面在所述可视区域中显示时加载与所述可视区域对应的数据;[0129] 第一确定子模块,用于重新检测所述目标页面的当前页面长度,并根据重新检测到的所述目标页面的当前页面长度和所述目标页面的已滚动距离,确定目标页面是否滚动至所述目标位置;[0130] 触发子模块,用于在所述目标页面未滚动至所述目标位置的情况下,在预设时段后,触发所述控制子模块控制所述目标页面以所述显示高度为滚动距离进行滚动,直至所述目标页面滚动至所述目标位置。[0131] 可选地,所述第一确定子模块包括:[0132] 第二确定子模块,用于确定所述重新检测到的所述目标页面的当前页面长度减去所述目标页面的已滚动距离并减去所述显示高度后所得的目标长度是否大于所述显示高度;[0133] 第三确定子模块,用于在所述目标长度不大于所述显示高度的情况下,确定所述目标页面滚动至所述目标位置。[0134] 所述页面内容爬取装置包括处理器和存储器,上述第一确定模块、滚动模块、第一爬取模块等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。[0135] 处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来对目标页面的内容数据进行爬取。[0136] 本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述页面内容爬取方法。[0137] 本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述页面内容爬取方法。[0138] 本发明实施例提供了一种设备,如图8所示,设备70包括至少一个处理器701、以及与处理器701连接的至少一个存储器702、总线703;其中,处理器701、存储器702通过总线703完成相互间的通信;处理器701用于调用存储器702中的程序指令,以执行上述的页面内容爬取方法。本文中的设备可以是服务器、PC等。[0139] 本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:[0140] 确定可视区域的显示高度和加载的目标页面的当前页面长度;[0141] 根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示,其中,所述目标页面滚动至所述目标位置时,所述目标页面未加载新的数据;[0142] 爬取所述目标页面中已在所述可视区域中进行显示且未被爬取的数据,并将爬取到的数据存储至页面数据集合。[0143] 可选地,在所述爬取所述目标页面中已在所述可视区域中进行显示且未被爬取的数据,并将爬取到的数据存储至页面数据集合的步骤之后,所述方法还包括:[0144] 控制所述目标页面滚动,并在所述目标页面在所述可视区域中已全部显示时,确定所述目标页面是否加载新的数据;[0145] 若所述目标页面未加载新的数据,爬取所述目标页面中从所述目标位置之后滚动至所述目标页面全部显示对应的显示数据,并将所述显示数据存储至所述页面数据集合。[0146] 可选地,在所述确定所述目标页面是否加载新的数据的步骤之后,所述方法还包括:[0147] 若确定所述目标页面加载了新的数据,则重新检测所述目标页面的当前页面长度,并根据重新检测到的目标页面的当前页面长度返回所述根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示的步骤。[0148] 可选地,所述方法还包括:[0149] 记录所述目标页面的数据加载次数,其中,所述数据加载次数初始为零,并在确定所述目标页面加载了新的数据时执行加一操作;[0150] 确定所述数据加载次数是否小于预设阈值;[0151] 若所述数据加载次数小于预设阈值,则执行所述在所述目标页面在所述可视区域中已全部显示时,确定所述目标页面是否加载新的数据的步骤;[0152] 若所述数据加载次数不小于所述预设阈值,则在所述目标页面在所述可视区域中已全部显示时,爬取所述目标页面中从所述目标位置之后滚动至所述目标页面全部显示对应的显示数据,并将所述显示数据存储至所述页面数据集合。[0153] 可选地,所述根据所述目标页面的当前页面长度,控制所述目标页面以所述显示高度为滚动距离依次进行滚动,以使所述目标页面滚动至目标位置,并在所述可视区域中对所述目标页面进行显示,包括:[0154] 控制所述目标页面以所述显示高度为滚动距离进行滚动,以使所述目标页面在所述可视区域中显示时加载与所述可视区域对应的数据;[0155] 重新检测所述目标页面的当前页面长度,并根据重新检测到的所述目标页面的当前页面长度和所述目标页面的已滚动距离,确定目标页面是否滚动至所述目标位置;[0156] 若所述目标页面未滚动至所述目标位置,在预设时段后,重新返回所述控制所述目标页面以所述显示高度为滚动距离进行滚动的步骤,直至所述目标页面滚动至所述目标位置。[0157] 可选地,所述根据重新检测到的所述目标页面的当前页面长度和所述目标页面的已滚动距离,确定目标页面是否滚动至所述目标位置,包括:[0158] 确定所述重新检测到的所述目标页面的当前页面长度减去所述目标页面的已滚动距离并减去所述显示高度后所得的目标长度是否大于所述显示高度;[0159] 若所述目标长度不大于所述显示高度,确定所述目标页面滚动至所述目标位置。[0160] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0161] 在一个典型的配置中,设备包括一个或多个处理器(CPU)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。[0162] 存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。[0163] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。[0164] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。[0165] 本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。[0166] 以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
专利地区:北京
专利申请日期:2019-09-29
专利公开日期:2024-07-26
专利公告号:CN112579851B