以论坛《宽带山》为例,需要根据给定的关键词,取得关于该关键词的所有帖子,包括人气数,发帖主题,回复数,发表人,发表时间,帖子链接,帖子详细文本内容等。
详细代码如下:
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class KeyWordsSearchUtil { /** * 根据关键词查询论坛所需信息map * @param KeyWord 传入关键词 * @return */ public static List<Map<String, Object>> findByKeyWord(String KeyWord) { List<Map<String, Object>>postsList=new ArrayList<Map<String,Object>>(); Map<String, Object>postsOneMap=null; try { Document doc = 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(); Elements postsLs=doc.select("li.i2").not(".h-bg"); if (postsLs!=null&&postsLs.size()>0) { for (Element childPost : postsLs) { postsOneMap=new HashMap<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.n3 a").attr("href")); postsOneMap.put("postsContents", getContentsByUrl("http://club.pchome.net"+childPost.select("span.n3 a").attr("href"))); postsList.add(postsOneMap); } } } catch (Exception e) { e.printStackTrace(); } return postsList; } /** * 根据帖子的url获取帖子的文本内容 * @param url 帖子的路径 * @return */ public static String getContentsByUrl(String url) { String contents="11"; try { Document doc = Jsoup.connect(url) .data("query", "Java") .userAgent("Mozilla") .cookie("auth", "token") .timeout(10000) .ignoreHttpErrors(true) .post(); if(doc.select("div.mc").first()!=null){ Element contentsEle=doc.select("div.mc div").first(); contents=contentsEle.select("div").first().text(); if (contents.contains("[向左转] [向右转] [原图]")) { contents=contents.replace("[向左转] [向右转] [原图]", ""); } } } catch (Exception e) { e.printStackTrace(); } return contents; } public static void main(String[] args) throws Exception { 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 (int i = 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("-----------------"); } //http://club.pchome.net/thread_1_15_7519679.html // String str=getContentsByUrl("http://club.pchome.net/thread_1_15_7519679.html"); // System.out.println(str); } }
以上代码能成功抓取宽带山论坛中,关键词为:电影 的相关帖子列表,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并提供一种干净和安全的方式来与网页进行交互。这...