1、题记
在爬取数据时,会遇到分页爬取的问题。传统的方法是获取到页数xpath,然后逐页面进行解析。
但是受开发模型不易扩展的影响,没有实现。
后来,转换下思维,很快实现。
2、换个思维
程序搁浅了,昨晚发现,完全可以换个思维。
由于网页分页存在以下特点:
第一页:http://www.xxx.com/facuty/XCoLUn/menen_1.htm
第二页:http://www. xxx .com/facuty/XCoLUn/menen_2.htm
第三页: http://www. xxx .com/facuty/XCoLUn/menen_3.htm
就想到直接外层套个循环即可,当分页出现解析为空的时候,
说明当前页没有内容,停止循环即可。
//原有入口地址: entryUrl
//分页后处理地址:
for(int i = 1; i <= 20; i++){
String strTmp = "/ menen_" + i +".htm";
String curUrlPage = entryUrl.replace(".htm", strTmp);
System.out.println("curPage =" + curUrlPage);
.......
if (results == null || results.size() == 0) {
logger.error("网页抽取失败, entryURL=" + curUrlPage);
logger.error(title + "最大页数: " + (i-1));
break;
}
}
3、业务核心逻辑
1)配置入口地址;
2)配置需要解析的url xpath以及提取的标题、日期、人名等xpath地址;
3)获取content内容;
4)解析content获取标题、日期、人名等信息。
4、小结
一路走不通时,有时候需要死磕,但有时候转换思维后,或许能找到更快、更好的方法。
2017年6月3日 10:20 于家中床前
作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/72850572
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!