以论坛《宽带山》为例,需要根据给定的关键词,取得关于该关键词的所有帖子,包括人气数,发帖主题,回复数,发表人,发表时间,帖子链接,帖子详细文本内容等。
详细代码如下:
- importjava.util.ArrayList;
- importjava.util.HashMap;
- importjava.util.List;
- importjava.util.Map;
- importorg.jsoup.Jsoup;
- importorg.jsoup.nodes.Document;
- importorg.jsoup.nodes.Element;
- importorg.jsoup.select.Elements;
- publicclassKeyWordsSearchUtil{
- publicstaticList<Map<String,Object>>findByKeyWord(StringKeyWord){
- List<Map<String,Object>>postsList=newArrayList<Map<String,Object>>();
- Map<String,Object>postsOneMap=null;
- try{
- Documentdoc=Jsoup.connect("http://club.pchome.net/forum_1_15____md__1_"+java.net.URLEncoder.encode(KeyWord,"utf-8")+".html")
- .data("query","Java")
- .userAgent("Mozilla")
- .cookie("auth","token")
- .timeout(10000)
- .ignoreHttpErrors(true)
- .post();
- ElementspostsLs=doc.select("li.i2").not(".h-bg");
- if(postsLs!=null&&postsLs.size()>0){
- for(ElementchildPost:postsLs){
- postsOneMap=newHashMap<String,Object>();
- postsOneMap.put("postsPopularity",childPost.select("li>span.n2").first().text());
- postsOneMap.put("postsTitle",childPost.select("span.n3>a").attr("title"));
- postsOneMap.put("postsFloor",childPost.select("span.n4").first().text());
- postsOneMap.put("postsCname",childPost.select("a.bind_hover_card").first().text());
- postsOneMap.put("postsCtime",childPost.select("li>span.n6").first().text());
- postsOneMap.put("postsUrl","http://club.pchome.net"+childPost.select("span.n3a").attr("href"));
- postsOneMap.put("postsContents",getContentsByUrl("http://club.pchome.net"+childPost.select("span.n3a").attr("href")));
- postsList.add(postsOneMap);
- }
- }
- }catch(Exceptione){
- e.printStackTrace();
- }
- returnpostsList;
- }
- publicstaticStringgetContentsByUrl(Stringurl){
- Stringcontents="11";
- try{
- Documentdoc=Jsoup.connect(url)
- .data("query","Java")
- .userAgent("Mozilla")
- .cookie("auth","token")
- .timeout(10000)
- .ignoreHttpErrors(true)
- .post();
- if(doc.select("div.mc").first()!=null){
- ElementcontentsEle=doc.select("div.mcdiv").first();
- contents=contentsEle.select("div").first().text();
- if(contents.contains("[向左转][向右转][原图]")){
- contents=contents.replace("[向左转][向右转][原图]","");
- }
- }
- }catch(Exceptione){
- e.printStackTrace();
- }
- returncontents;
- }
- publicstaticvoidmain(String[]args)throwsException{
- List<Map<String,Object>>postsList=KeyWordsSearchUtil.findByKeyWord("电影");
- System.out.println("http://club.pchome.net/forum_1_15____md__1_"+java.net.URLEncoder.encode("电影","utf-8")+".html");
- System.out.println(postsList.size()+"/////");
- for(inti=0;i<postsList.size();i++){
- for(Map.Entry<String,Object>entry:postsList.get(i).entrySet()){
- System.out.println("key="+entry.getKey()+"|value="+entry.getValue());
- }
- System.out.println("-----------------");
- }
- }
- }
以上代码能成功抓取宽带山论坛中,关键词为:电影 的相关帖子列表,main方法中已有测试,网络畅通下可测试通过。但上面代码仅为完成功能,性能较差,项目中需重写或优化
分享到:
相关推荐
在现代Web开发中,数据抓取和网页解析是常见需求,Jsoup凭借其高效且易用的特性,成为开发者们首选的工具之一。本文将深入探讨Jsoup在解析HTML和XML时的关键知识点。 一、Jsoup的基本概念与安装 Jsoup是由Jonas ...
**Jsoup:HTML解析神器** Jsoup是一款Java库,它为了解析、提取以及操作HTML提供了强大的工具。在Web开发中,我们常常需要处理各种HTML文档,比如抓取网页数据、自动化测试或是构建爬虫。Jsoup以浏览器的方式解析...
Jsoup是一款非常强大的Java库,专门用于处理HTML文档,提供了丰富的API来抓取、解析、修改和输出HTML内容。在Java开发中,如果你需要从网页上提取数据或者进行Web抓取,Jsoup是一个理想的选择。这个压缩包文件“用...
**jsoup API解析HTML** jsoup是一个非常强大的Java库,专为处理真实世界的HTML而设计。它提供了方便的API,用于提取和操作数据,使用DOM,CSS和jQuery-like方法。在深入jsoup的API之前,我们需要理解HTML解析的重要...
**Jsoup:HTML解析库** Jsoup是一款Java库,它为了解析、提取以及操作HTML提供了强大的功能。...通过熟练掌握Jsoup,开发者可以轻松地从网页中获取有价值的信息,并将其融入到Android应用程序中。
**JSoup:强大的HTML解析库** JSoup是一个用于处理实际世界HTML的Java库。它提供了非常方便的API,用于提取...在"NewSipder"项目中,JSoup可以帮助我们高效地解析和提取网页信息,为网络爬虫的实现提供了坚实的基础。
自学jsoup编程,写的第一个抓取程序,参考了一些网络的资料,有些很有用, 向原作者致谢! 打包时将最新版的jsoup包和jsoup源码包都打进去了,下载解压后和程序放在同一目录马上就能运行。 使用对象: 需要懂一点...
本文将深入探讨如何使用Jsoup解析HTML,并根据解析结果来修改文件名。我们将通过一个简单的示例来展示这个过程。 首先,我们需要理解Jsoup的基本用法。Jsoup库提供了一个强大的API,可以方便地解析HTML文档,提取...
**Android使用Jsoup技术解析HTML** Jsoup是一个Java库,专为处理真实世界的HTML而设计。在Android开发中,我们经常需要从网页抓取数据,比如解析新闻标题、获取图片链接或者提取用户评论等。Jsoup提供了一种简单、...
**JSoup:HTML解析库** JSoup是一款强大的Java库,专为处理和解析HTML文档而设计。它提供了简单易用的API,使开发者能够轻松地提取数据、操作DOM(文档对象模型)以及清理HTML。标题中的"jsoup解析html所需包1.7.3...
HttpClient和Jsoup是Java开发中常用的两个库,用于网络数据采集和HTML解析。HttpClient提供了强大的HTTP客户端服务,而Jsoup则是一个优秀的库,用于处理和理解HTML文档结构。本篇文章将深入探讨这两个库的使用方法...
利用jsoup工具解析html的demo
- **官网地址**:[http://www.open-open.com/jsoup/](http://www.open-open.com/jsoup/) - **Cookbook**:官方提供的指南详细介绍了jsoup的使用方法。 #### 四、入门教程 ##### 1. 解析和遍历HTML文档 解析HTML...
在这个场景下,`jsoup`是一个非常实用的库,它可以帮助我们轻松地解析和操作HTML文档。本文将深入探讨如何在Android中利用`jsoup`库解析HTML文件并进行内容替换。 首先,让我们了解什么是`jsoup`。`jsoup`是一个...
**Jsoup库解析HTML、XML或URL链接中的DOM节点** Jsoup是一款强大的Java库,它设计用于处理实际世界中的HTML,使得开发者可以方便地提取和操作数据。在Web开发中,有时我们需要从网页中获取特定信息,比如文章内容、...
String html = "<html>...</html>"; Document doc = Jsoup.parse(html); ``` 3. **CSS选择器** - Jsoup支持CSS选择器,这使得我们可以方便地定位HTML元素。例如,如果我们知道新闻标题位于`...
这是使用Jsoup解析HTML得到数据的一个小例子,具体的使用方法请参见我的博客:http://blog.csdn.net/ProgramChangesWorld/article/details/47134255
### jsoup根据URL解析HTML #### 一、jsoup简介 `jsoup`是一款功能强大的Java库,专门用于处理HTML文档。它提供了多种便捷的方法来解析网页内容,并且支持通过DOM(Document Object Model)、CSS选择器及类似jQuery...
`Test01.java`负责使用jSoup解析HTML并提取所需信息,而`UrlUtils.java`则辅助处理URL相关的操作,如生成合法请求的URL,或对获取的链接进行编码和解码。 总结,jSoup是Java中解析和操作HTML的强大工具,其易于使用...
**JSoup库解析HTML的基本概念** JSoup是一个用于处理实际世界HTML的Java库。它提供了非常方便的API,用于提取和操作数据,使用DOM、CSS和微格式。JSoup能够理解HTML并提供一种干净和安全的方式来与网页进行交互。这...