`

jsoup解析html/根据关键词拿到论坛帖子信息

 
阅读更多
以论坛《宽带山》为例,需要根据给定的关键词,取得关于该关键词的所有帖子,包括人气数,发帖主题,回复数,发表人,发表时间,帖子链接,帖子详细文本内容等。

详细代码如下:

Java代码
  1. importjava.util.ArrayList;
  2. importjava.util.HashMap;
  3. importjava.util.List;
  4. importjava.util.Map;
  5. importorg.jsoup.Jsoup;
  6. importorg.jsoup.nodes.Document;
  7. importorg.jsoup.nodes.Element;
  8. importorg.jsoup.select.Elements;
  9. publicclassKeyWordsSearchUtil{
  10. /**
  11. *根据关键词查询论坛所需信息map
  12. *@paramKeyWord传入关键词
  13. *@return
  14. */
  15. publicstaticList<Map<String,Object>>findByKeyWord(StringKeyWord){
  16. List<Map<String,Object>>postsList=newArrayList<Map<String,Object>>();
  17. Map<String,Object>postsOneMap=null;
  18. try{
  19. Documentdoc=Jsoup.connect("http://club.pchome.net/forum_1_15____md__1_"+java.net.URLEncoder.encode(KeyWord,"utf-8")+".html")
  20. .data("query","Java")
  21. .userAgent("Mozilla")
  22. .cookie("auth","token")
  23. .timeout(10000)
  24. .ignoreHttpErrors(true)
  25. .post();
  26. ElementspostsLs=doc.select("li.i2").not(".h-bg");
  27. if(postsLs!=null&&postsLs.size()>0){
  28. for(ElementchildPost:postsLs){
  29. postsOneMap=newHashMap<String,Object>();
  30. postsOneMap.put("postsPopularity",childPost.select("li>span.n2").first().text());
  31. postsOneMap.put("postsTitle",childPost.select("span.n3>a").attr("title"));
  32. postsOneMap.put("postsFloor",childPost.select("span.n4").first().text());
  33. postsOneMap.put("postsCname",childPost.select("a.bind_hover_card").first().text());
  34. postsOneMap.put("postsCtime",childPost.select("li>span.n6").first().text());
  35. postsOneMap.put("postsUrl","http://club.pchome.net"+childPost.select("span.n3a").attr("href"));
  36. postsOneMap.put("postsContents",getContentsByUrl("http://club.pchome.net"+childPost.select("span.n3a").attr("href")));
  37. postsList.add(postsOneMap);
  38. }
  39. }
  40. }catch(Exceptione){
  41. e.printStackTrace();
  42. }
  43. returnpostsList;
  44. }
  45. /**
  46. *根据帖子的url获取帖子的文本内容
  47. *@paramurl帖子的路径
  48. *@return
  49. */
  50. publicstaticStringgetContentsByUrl(Stringurl){
  51. Stringcontents="11";
  52. try{
  53. Documentdoc=Jsoup.connect(url)
  54. .data("query","Java")
  55. .userAgent("Mozilla")
  56. .cookie("auth","token")
  57. .timeout(10000)
  58. .ignoreHttpErrors(true)
  59. .post();
  60. if(doc.select("div.mc").first()!=null){
  61. ElementcontentsEle=doc.select("div.mcdiv").first();
  62. contents=contentsEle.select("div").first().text();
  63. if(contents.contains("[向左转][向右转][原图]")){
  64. contents=contents.replace("[向左转][向右转][原图]","");
  65. }
  66. }
  67. }catch(Exceptione){
  68. e.printStackTrace();
  69. }
  70. returncontents;
  71. }
  72. publicstaticvoidmain(String[]args)throwsException{
  73. List<Map<String,Object>>postsList=KeyWordsSearchUtil.findByKeyWord("电影");
  74. System.out.println("http://club.pchome.net/forum_1_15____md__1_"+java.net.URLEncoder.encode("电影","utf-8")+".html");
  75. System.out.println(postsList.size()+"/////");
  76. for(inti=0;i<postsList.size();i++){
  77. for(Map.Entry<String,Object>entry:postsList.get(i).entrySet()){
  78. System.out.println("key="+entry.getKey()+"|value="+entry.getValue());
  79. }
  80. System.out.println("-----------------");
  81. }
  82. //http://club.pchome.net/thread_1_15_7519679.html
  83. //Stringstr=getContentsByUrl("http://club.pchome.net/thread_1_15_7519679.html");
  84. //System.out.println(str);
  85. }
  86. }

以上代码能成功抓取宽带山论坛中,关键词为:电影 的相关帖子列表,main方法中已有测试,网络畅通下可测试通过。但上面代码仅为完成功能,性能较差,项目中需重写或优化

分享到:
评论

相关推荐

    Jsoup解析html+xml

    在现代Web开发中,数据抓取和网页解析是常见需求,Jsoup凭借其高效且易用的特性,成为开发者们首选的工具之一。本文将深入探讨Jsoup在解析HTML和XML时的关键知识点。 一、Jsoup的基本概念与安装 Jsoup是由Jonas ...

    使用Jsoup解析html网页

    **Jsoup:HTML解析神器** Jsoup是一款Java库,它为了解析、提取以及操作HTML提供了强大的工具。在Web开发中,我们常常需要处理各种HTML文档,比如抓取网页数据、自动化测试或是构建爬虫。Jsoup以浏览器的方式解析...

    用Jsoup解析html的所有jar包

    Jsoup是一款非常强大的Java库,专门用于处理HTML文档,提供了丰富的API来抓取、解析、修改和输出HTML内容。在Java开发中,如果你需要从网页上提取数据或者进行Web抓取,Jsoup是一个理想的选择。这个压缩包文件“用...

    jsoupAPI解析html

    **jsoup API解析HTML** jsoup是一个非常强大的Java库,专为处理真实世界的HTML而设计。它提供了方便的API,用于提取和操作数据,使用DOM,CSS和jQuery-like方法。在深入jsoup的API之前,我们需要理解HTML解析的重要...

    Jsoup解析html的示例

    **Jsoup:HTML解析库** Jsoup是一款Java库,它为了解析、提取以及操作HTML提供了强大的功能。...通过熟练掌握Jsoup,开发者可以轻松地从网页中获取有价值的信息,并将其融入到Android应用程序中。

    jsoup解析HTML

    **JSoup:强大的HTML解析库** JSoup是一个用于处理实际世界HTML的Java库。它提供了非常方便的API,用于提取...在"NewSipder"项目中,JSoup可以帮助我们高效地解析和提取网页信息,为网络爬虫的实现提供了坚实的基础。

    源码_Jsoup 解析实时/7天/15天内 全国各城市天气

    自学jsoup编程,写的第一个抓取程序,参考了一些网络的资料,有些很有用, 向原作者致谢! 打包时将最新版的jsoup包和jsoup源码包都打进去了,下载解压后和程序放在同一目录马上就能运行。 使用对象: 需要懂一点...

    jsoup解析html修改文件名

    本文将深入探讨如何使用Jsoup解析HTML,并根据解析结果来修改文件名。我们将通过一个简单的示例来展示这个过程。 首先,我们需要理解Jsoup的基本用法。Jsoup库提供了一个强大的API,可以方便地解析HTML文档,提取...

    Android使用Jsoup技术解析HTML

    **Android使用Jsoup技术解析HTML** Jsoup是一个Java库,专为处理真实世界的HTML而设计。在Android开发中,我们经常需要从网页抓取数据,比如解析新闻标题、获取图片链接或者提取用户评论等。Jsoup提供了一种简单、...

    jsoup解析html所需包1.7.3

    **JSoup:HTML解析库** JSoup是一款强大的Java库,专为处理和解析HTML文档而设计。它提供了简单易用的API,使开发者能够轻松地提取数据、操作DOM(文档对象模型)以及清理HTML。标题中的"jsoup解析html所需包1.7.3...

    httpClient采集jsoup解析

    HttpClient和Jsoup是Java开发中常用的两个库,用于网络数据采集和HTML解析。HttpClient提供了强大的HTTP客户端服务,而Jsoup则是一个优秀的库,用于处理和理解HTML文档结构。本篇文章将深入探讨这两个库的使用方法...

    jsoup解析html

    利用jsoup工具解析html的demo

    Jsoup解析html中文文档

    - **官网地址**:[http://www.open-open.com/jsoup/](http://www.open-open.com/jsoup/) - **Cookbook**:官方提供的指南详细介绍了jsoup的使用方法。 #### 四、入门教程 ##### 1. 解析和遍历HTML文档 解析HTML...

    android使用jsoup 解析html文件

    在这个场景下,`jsoup`是一个非常实用的库,它可以帮助我们轻松地解析和操作HTML文档。本文将深入探讨如何在Android中利用`jsoup`库解析HTML文件并进行内容替换。 首先,让我们了解什么是`jsoup`。`jsoup`是一个...

    使用Jsoup库解析HTML、XML或URL链接中的DOM节点

    **Jsoup库解析HTML、XML或URL链接中的DOM节点** Jsoup是一款强大的Java库,它设计用于处理实际世界中的HTML,使得开发者可以方便地提取和操作数据。在Web开发中,有时我们需要从网页中获取特定信息,比如文章内容、...

    Jsoup解析Html获取新闻列表

    String html = "&lt;html&gt;...&lt;/html&gt;"; Document doc = Jsoup.parse(html); ``` 3. **CSS选择器** - Jsoup支持CSS选择器,这使得我们可以方便地定位HTML元素。例如,如果我们知道新闻标题位于`...

    使用Jsoup解析HTML数据的Demo

    这是使用Jsoup解析HTML得到数据的一个小例子,具体的使用方法请参见我的博客:http://blog.csdn.net/ProgramChangesWorld/article/details/47134255

    jsoup根据url解析html

    ### jsoup根据URL解析HTML #### 一、jsoup简介 `jsoup`是一款功能强大的Java库,专门用于处理HTML文档。它提供了多种便捷的方法来解析网页内容,并且支持通过DOM(Document Object Model)、CSS选择器及类似jQuery...

    JAVA jSOUP解析html

    `Test01.java`负责使用jSoup解析HTML并提取所需信息,而`UrlUtils.java`则辅助处理URL相关的操作,如生成合法请求的URL,或对获取的链接进行编码和解码。 总结,jSoup是Java中解析和操作HTML的强大工具,其易于使用...

    jsoup解析返回的html

    **JSoup库解析HTML的基本概念** JSoup是一个用于处理实际世界HTML的Java库。它提供了非常方便的API,用于提取和操作数据,使用DOM、CSS和微格式。JSoup能够理解HTML并提供一种干净和安全的方式来与网页进行交互。这...

Global site tag (gtag.js) - Google Analytics