一种Ajax动态加载网页数据爬取方法与系统与流程

文档序号:32845562发布日期:2023-01-06 22:09阅读:48来源:国知局
一种Ajax动态加载网页数据爬取方法与系统与流程
一种ajax动态加载网页数据爬取方法与系统
技术领域
1.本发明涉及数据爬取技术领域,特别是涉及一种ajax动态加载网页数据爬取方法与系统。


背景技术:

2.网络爬虫程序通常用于爬取一些静态的html页面,对于ajax技术加载的动态网页一直是网络蜘蛛面临的难题。所谓动态网页,是由程序自动生成的页面,这样的好处是可以快速统一更改网页风格,也可以减少网页所占服务器的空间,但同样给网络蜘蛛的抓取带来一些困难。由于开发语言不断的增多,动态网页的类型也越来越多,如:asp、jsp、php等。对于由ajax技术异步动态加载的网页,由于更新页面时url地址不变,使用常规的网络爬虫程序只能爬取当前页面的信息,通过页面解析获取的关键信息也有限。


技术实现要素:

3.为了克服现有技术的不足,本发明的目的是提供一种ajax动态加载网页数据爬取方法与系统,以提高关键信息的爬取效果。
4.为实现上述目的,本发明提供了如下方案:
5.一种ajax动态加载网页数据爬取方法,包括:
6.获取目标网页的url地址与预设关键词;
7.根据目标网页的url地址与爬取内容得到目标网页的待爬取url地址;
8.利用所述待爬取url地址对所述目标网页进行爬取得到网页内容;
9.遍历所述网页内容得到包含预设关键词的关键字段。
10.优选的,所述根据目标网页的url地址与爬取内容得到目标网页的待爬取url地址,包括:
11.根据目标网页的url地址与爬取内容得到目标网页的类型;
12.当所述目标网页为静态的html页面时,将目标网页的url地址作为待爬取url地址;
13.当所述目标网页为动态网页时,追溯所述目标网页的公共网络接口地址找到目标网页的真实url地址,并将所述真实url地址作为待爬取url地址。
14.优选的,遍历所述网页内容得到包含预设关键词的关键字段,包括:
15.当所述目标网页为静态的html页面时,采用标签树遍历的方式解析并提取出网页内容得到包含预设关键词的关键字段。
16.优选的,所述遍历所述网页内容得到包含预设关键词的关键字段,还包括:
17.当所述目标网页为动态网页时,通过beautifulsoup中的find函数找到所需的信息单元;
18.使用正则表达式(regular expression)通过字符串匹配方式获取关键字段。
19.本发明还提供了一种ajax动态加载网页数据爬取系统,包括:
20.网页参数获取模块,用于获取目标网页的url地址与预设关键词;
21.url地址确认模块,用于根据目标网页的url地址与爬取内容得到目标网页的待爬取url地址;
22.数据爬取模块,用于利用所述待爬取url地址对所述目标网页进行爬取得到网页内容;
23.爬取内容提取模块,用于遍历所述网页内容得到包含预设关键词的关键字段。
24.优选的,所述url地址确认模块,包括:
25.网页类型确认单元,用于根据目标网页的url地址与爬取内容得到目标网页的类型;
26.静态页面地址确认单元,用于当所述目标网页为静态的html页面时,将目标网页的url地址作为待爬取url地址;
27.动态网页地址确认单元,用于当所述目标网页为动态网页时,追溯所述目标网页的公共网络接口地址找到目标网页的真实url地址,并将所述真实url地址作为待爬取url地址。
28.优选的,所述爬取内容提取模块,包括:
29.静态页面解析单元,用于当所述目标网页为静态的html页面时,采用标签树遍历的方式解析并提取出网页内容得到包含预设关键词的关键字段。
30.优选的,所述爬取内容提取模块,还包括:
31.动态页面解析单元,用于当所述目标网页为动态网页时,通过beautifulsoup中的find函数找到所需的信息单元;
32.使用正则表达式通过字符串匹配方式获取关键字段。
33.根据本发明提供的具体实施例,本发明公开了以下技术效果:
34.本发明提供了一种ajax动态加载网页数据爬取方法与系统,与现有技术相比,本发明通过根据目标网页的url地址与爬取内容可以得到目标网页的真实url地址,基于此地址对目标网页进行爬取可以大大提升爬取效果。
附图说明
35.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
36.图1为本发明提供的一种ajax动态加载网页数据爬取方法流程图。
具体实施方式
37.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
38.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包
含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
39.本技术的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤、过程、方法等没有限定于已列出的步骤,而是可选地还包括没有列出的步骤,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤元。
40.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
41.本发明的目的是提供一种ajax动态加载网页数据爬取方法,以提高关键信息的爬取效果。
42.请参阅图1,一种ajax动态加载网页数据爬取方法,包括:
43.步骤1:获取目标网页的url地址与预设关键词;
44.步骤2:根据目标网页的url地址与爬取内容得到目标网页的待爬取url地址;
45.进一步的,步骤2包括:
46.根据目标网页的url地址与爬取内容得到目标网页的类型;
47.当所述目标网页为静态的html页面时,将目标网页的url地址作为待爬取url地址;
48.当所述目标网页为动态网页时,使用开发者工具中的xhr追溯所述目标网页的公共网络接口地址找到目标网页的真实url地址,并将所述真实url地址作为待爬取url地址。
49.步骤3:利用所述待爬取url地址对所述目标网页进行爬取得到网页内容;
50.在本发明实施例中,可采用requests.get()命令获取网页信息。
51.步骤4:遍历所述网页内容得到包含预设关键词的关键字段。
52.进一步的,步骤4包括:
53.当所述目标网页为静态的html页面时,采用标签树遍历的方式解析并提取出网页内容得到包含预设关键词的关键字段。
54.当所述目标网页为动态网页时,通过beautifulsoup中的find函数找到所需的信息单元;
55.使用正则表达式通过字符串匹配方式获取关键字段。
56.下面结合具体的实施例对本发明中的ajax动态加载网页数据爬取方法做进一步的说明:
57.第一:进行需求分析
58.针对需求信息锁定目标网站,找到关键词接口地址,同时查看该网站根目录下的robots协议。
59.第二:制定爬取策略
60.根据所爬取网页的url与爬取内容是否对应判断网页地址是否可以直接作为初始url,如果是静态的html页面则直接带入即可,如果是动态网页则需通过开发者工具中的xhr追溯其公共网关接口找到真实url,带入爬取程序的初始设定。
61.进一步的,通过xhr追溯其公共网关接口找到真实url的具体操作方法是:
62.打开目标网页,同时打开目标页面源代码;
63.在源代码中通过“检查”的模式进入开发者工具;
64.在开发者工具的网络模块部分单击“xmlhttprequest”命令,xhr命令可以在后台与服务器交换数据,这就意味着可以在不加载整个网页的情况下,对网页某部分的内容进行更新;
65.然后,点击目标页面的“下一页”命令(这个过程可以重复);
66.通过查看“请求url列表”可以遍历所有网页真实的url;
67.通过网页真实的url,找到循环变量,通过循环模式获取所有目标网页的真实url地址。
68.根据目标网站的html源代码的特点决定爬取程序的技术路线:如果是html静态网页标签形式,技术路线采用requests+beautifulsoup,标签树遍历的方式解析网页;如果是html+脚本语言格式,技术路线采用requests+beautifulsoup+re,标签树遍历与正则表达式字符串匹配相结合解析页面。
69.其具体实现方式如下:
70.通过requests库的get()方法获取目标页面信息,利用raise_for_status()函数,检测爬取状态,保证爬取数据的有效性,采用apparent_encoding编码模式识别中文字符;整个过程采用try-except模式,可自动处理各类异常状况的发生,实现网络数据的自动爬取功能。
71.通过beautifulsoup中的find函数遍历标签树的各子节点,寻找信息单元,获取记录信息;使用正则表达式中的re.findall()函数,通过字符串匹配方式获取关键字段信息,通过循环的方式遍历所有的记录信息获取字段信息,并将提取的字段信息存储,实现网页信息的深度解析。
72.第三:设计程序结构
73.步骤1:对目标数据库提交关键词请求,通过页面循环的方式获取全部页面信息;
74.步骤2:对于每个页面,提取关键信息键值对;
75.步骤3:信息的保存与输出方式。
76.第四:程序的执行过程:
77.主函数:
78.首先:定义关键词、定义循环深度、定义初始url地址;
79.其次:在循环过程中,调用数据爬取函数对每一页信息进行数据爬取、调用页面解析函数解析爬取页面的内容;
80.第三:调用信息输出函数关键内容格式化存储、输出。
81.数据爬取函数:
82.首先:通过requests.get()命令获取网页信息;
83.其次:检测爬取状态,验证爬取是否成功;
84.第三:utf-8编码方式的设置。
85.页面解析函数:
86.首先:通过beautifulsoup中的find函数找到所需的信息单元;
87.其次:使用正则表达式通过字符串匹配方式获取关键字段信息;
88.第三:通过循环的方式遍历所有的关键字段,并将提取的信息存储。
89.信息输出函数:
90.格式化爬取的信息,通过屏幕输出的方式查看爬取效果,同时以excel表格的形式保存在指定的文件路径中。
91.由于ajax动态加载的网页在更新页面时url地址不变,因此使用通用网络爬虫程序只能爬取当前页面的信息。而本发明利用开发者工具,通过网络(network)xhr追溯到公共网络接口地址,找到其初始的url,对初始url对应的源代码进行网页的爬取及关键信息的解析,可以获得更好的爬取结果。
92.本发明还提供了一种ajax动态加载网页数据爬取系统,包括:
93.网页参数获取模块,用于获取目标网页的url地址与预设关键词;
94.url地址确认模块,用于根据目标网页的url地址与爬取内容得到目标网页的待爬取url地址;
95.数据爬取模块,用于利用所述待爬取url地址对所述目标网页进行爬取得到网页内容;
96.爬取内容提取模块,用于遍历所述网页内容得到包含预设关键词的关键字段。
97.优选的,所述url地址确认模块,包括:
98.网页类型确认单元,用于根据目标网页的url地址与爬取内容得到目标网页的类型;
99.静态页面地址确认单元,用于当所述目标网页为静态的html页面时,将目标网页的url地址作为待爬取url地址;
100.动态网页地址确认单元,用于当所述目标网页为动态网页时,追溯所述目标网页的公共网络接口地址找到目标网页的真实url地址,并将所述真实url地址作为待爬取url地址。
101.优选的,所述爬取内容提取模块,包括:
102.静态页面解析单元,用于当所述目标网页为静态的html页面时,采用标签树遍历的方式解析并提取出网页内容得到包含预设关键词的关键字段。
103.优选的,所述爬取内容提取模块,还包括:
104.动态页面解析单元,用于当所述目标网页为动态网页时,通过beautifulsoup中的find函数找到所需的信息单元;
105.使用正则表达式通过字符串匹配方式获取关键字段。
106.根据本发明提供的具体实施例,本发明公开了以下技术效果:
107.本发明通过根据目标网页的url地址与爬取内容可以得到目标网页的真实url地址,基于此地址对目标网页进行爬取可以大大提升爬取效果。
108.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的方法而言,由于其与实施例公开的装置相对应,所以描述的比较简单,相关之处参见装置部分说明即可。
109.本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说
明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1