java爬虫解析提取末页数值。

现在写了三种方法获取末页地址。通过获取末页地址得到所需要的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.csdn.net/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;
	}




猜你喜欢

转载自blog.csdn.net/qq_26925867/article/details/52515521