现在写了三种方法获取末页地址。通过获取末页地址得到所需要的page。nextpage,来对网页进行爬取。
简单的思路就是爬取html页面的代码。比如说<a>标签中包括自己所需要的数值。就可以用正则表达式提取标签中所需要的数字,就可以提取出数值。
举个例子。
阴影部分就是所需要位置。为了提取相应的位置信息。
public int parseTotalPage(PageInfo pageInfo) {
int sumPages = 1;
String sumPagesString = "";//先赋值
Document doc = Jsoup.parse(pageInfo.getRawText());//从jsoup中提取文件
Elements numStr = doc.select("div[class=turn_page]").first().select("a");//找到字段对应位置
sumPagesString = numStr.get(4).text().replace(" ", "").replace(" ", "");//发现所需要尾页出现在第五行,也就是numstr数组第四个。
//System.out.println("列表为:"+numStr);//测试输出结果是否正确。
if(sumPagesString.length()==0)//判断最后字符结果长度,如果为0输出失败。
ARE.getLog().debug("会宁县人民法院网:获取总页数失败");
else {
sumPages = Integer.parseInt(sumPagesString);
}
return sumPages;}//返回结果
第二个例子。同理
<img src="https://img-blog.youkuaiyun.com/20160912175213432?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
public int parseTotalPage(PageInfo pageInfo) {
int sumPages = 1;
String sumPagesString = "";
Document doc = Jsoup.parse(pageInfo.getRawText());
Elements numStr = doc.select("span[class=pageleft]"); //获取位置
// Elements lis = doc.select("td[class=pagebar]");
System.out.println(numStr);
//String EndPage=StringX.trimAll(numStr.text());
sumPagesString =MatcherAssist.getMatcherStr(numStr.toString(),"共.*页");//正则表达式取共多少页中的共多少页
sumPagesString =MatcherAssist.getMatcherStr(sumPagesString,"[\\d]");//提取当中的数字
System.out.println(sumPagesString);
sumPages=Integer.parseInt(sumPagesString);
return sumPages;
}
最后一个例子别人写的,用正则表达式提取当中的尾页信息
观察图片可以看到尾页信息出现在<a>标签中,提取当中所需要的信息。
public int parseTotalPage(PageInfo pageInfo) {
String content = pageInfo.getRawText();
int sumPages=1;
String sumPagesString = "";
Pattern p=Pattern.compile("<a .+>尾页");//正则匹配需要的数值。
Matcher m=p.matcher(content);
while(m.find())
{
sumPagesString = m.group(0);
}
p=Pattern.compile("[\\d]+");//全是正则
Matcher m1=p.matcher(sumPagesString);
while(m1.find())
{
sumPagesString = m1.group(0);
}
if(sumPagesString.length()==0)
ARE.getLog().debug("阳泉市人民法院网:获取总页数失败");
else {
sumPages = Integer.parseInt(sumPagesString);
}
return sumPages;
}