本篇文章给大家谈谈jsoup,以及jsoup的parse反复用对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
使用jsoup抓取分页的问题
这几天正在研究。废话不多说,直接上代码,自己研究的,通过迭代抓取。pageList就是抓取的分页页面的全部链接地址。
其中Document doc= NetUtils.getDocument(url);是jsoup抓取页面的基本操作。
public class HtmlAnalsysTest3{
static String url="";
public static void main(String[] args){
analsysPage(url);
for(String hurl: pageList){
System.out.println(" hurl-->"+hurl);
}
}
//已经抓取的用来迭代过滤
static List<String> hisurl= new ArrayList<String>();
//所需要分页链接集合
static List<String> pageList= new ArrayList<String>();
private static void analsysPage(String url){
if(hisurl.contains(url)){
System.out.println("hisurl:"+hisurl.size());
return;
}
Document doc= NetUtils.getDocument(url);
if(doc==null){
System.out.println("doc is null"+url);
return;
}
hisurl.add(url);
String tag="body a";
String attr="abs:href";
String herfcontent="mt/huge";//只筛选胡歌的连接
Elements elemens= doc.select(tag);
for(Element e: elemens){
String href= e.attr(attr);
if(!href.contains(herfcontent)){
continue;
}
//System.out.println("页面page:"+ href);
if(!pageList.contains(href)){
pageList.add(href);
}
analsysPage(href);//迭代抓取,迭代过程会自动找后后续的页面
}
}
}
最终结果输出:
hurl-->
hurl-->
hurl-->
hurl-->
hurl-->
hurl-->
用jsoup解析获取一段网页内容的问题
这段html实际上是不符合规范的。在用jsoup解析时会出现问题。
我想到一个办法解决这个问题。
首先我想你应该是想得到标题、馆藏复本的数目、可借复本的数目、朱印宏编著和长江出版社。
所以我们先把上面html里面的文字全部得到即:
java开发解析馆藏复本:3可借复本:0朱印宏编著长江出版社
然后我想在这段文字中“馆藏复本:”、“可借复本:”、“编著”这几个字应该是固定不变的。所以我们可以用正则表达式去对它进行解析,得到你想要的文字。
代码如下:
publicclassTest{
publicstaticvoidmain(String[]args){
Stringhtml="<divclass=\"list_books\"id=\"list_books\"><td>java开发解析</td><p><span><strong>馆藏复本:</strong>3<br/><strong>可借复本:</strong>0</span>朱印宏编著<br/>长江出版社</p></div>";
Documentdoc=Jsoup.parse(html);
Stringe=doc.select("#list_books").text().replaceAll("[\\s]+","");
//System.out.println(e);
Patternp=Pattern.compile("^(.*)馆藏复本:([\\d]+)可借复本:([\\d]+)(.*)编著(.*)$");
Matcherm=p.matcher(e);
if(m.find()){
for(inti=1;i<=m.groupCount();i++){
System.out.println(m.group(i));
}
}
}
}
如果如下:
java开发解析
3
0
朱印宏
长江出版社
jsoup和jquery的区别是什么
jsoup是一款 Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。该版本包含一个支持 HTML5的解析器分支,可确保跟现在的浏览器一样解析 HTML的方法,同时降低了解析的时间和内存的占用。
Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。
希望能帮到你~