分析网站
网站url:https://www.studyinaustralia.gov.au/SIASearch/SIASearchResults.aspx?moduleId=13&mode=1&Keyword=Adelaide+University
首先根据网址,网站页面采用asp语言编写的。
其次查看想要抓取得数据是深层次的三级结构。想要抓到最终的数据,那么就要依次获取第二层数据,第一层数据。
其次再看页面跳转,当选择第二页,第三页时。网页的请求链接是不变的,则不能用直接通过链接来抓取数据的方法了,只能模拟网站请求,或者模拟网站点击()。
使用chrome 浏览器 ,进行网络请求时,header中 包含 formdata数据。本质上,只要使用sumbit提交数据时,携带必要的formdata数据就可以了。
查看网站的源代码,发现每一页的link只是 eventTarget, eventArgument 。分析发现,eventTarget 是固定的函数。eventArgument 是页码,
以上理清之后,就可以开始考虑抓包进度了。
|
|
采用的是asp的form表单
首页:
二级页面:
三级页面:
分析抓取内容
网页抓取的是不规则的表单数据,则考虑使用json保存数据格式。
如果是规则的表单数据则可以考虑使用 csv保存数据格式。
梳理逻辑
分析抓取的页面逻辑路径,想要获取结果页的数据。那么必须有一二级页面的链接,才行。
结果实现
step1:获取搜索页面第一页,进入二级页面的所有链接
step2:获取二级页面进入三级页面的所有链接
step3:三级详情页面的数据抓取
step4:根据层次结构写入到字典中
step5:循环算法,依次获取第二页的数据。第三页的数据,以及所有的数据。
效果展示
源代码:
代码优化,及bug修复。
修复了,数据读取不全的问题
py代码函数化,方便理解
代码优化,及bug修复。
修复了,当网络秦秋失败后,可以直接读取任意页面,而不用重第一页开始。
结果分页写入到json文件中
结果: