新浪微博热门评论抽取规则
Posted TopCoderのZeze
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新浪微博热门评论抽取规则相关的知识,希望对你有一定的参考价值。
package weiboextractor; import java.util.HashSet; import java.util.Set; import org.apache.log4j.Logger; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; /** * * @ClassName: WeiboExtrator * @Description: 微博抽取 * @author zeze * @date 2016年11月27日 上午12:09:49 * */ public class WeiboExtrator { private static Logger logger = Logger.getLogger(WeiboExtrator.class); // 热评翻页抽取 public int weiboExtratorPageNum(StringBuilder html) { int num = 1; Document doc = Jsoup.parse(html.toString()); // 没有热门评论,直接返回 Elements rt = doc.select("div[class=c]"); if (!rt.text().contains("返回评论列表")) { logger.info("没有转发"); return 0; } if (doc.select("[id=pagelist]").text().contains("页")) {// 存在翻页 String pnum = doc.select("[id=pagelist]").get(0).text(); pnum = pnum.substring(pnum.indexOf("/") + 1).replace("页", ""); num = Integer.parseInt(pnum); } else { logger.info("热门评论小于10"); } logger.info("热门评论页数:" + num); return num; } public Set<String> weiboExtratorCommentList(StringBuilder html) { Set<String> commentList=new HashSet<String>(); String zname = null;// 评论的用户名 String zid = null;// 评论的用户ID String zzan = null;// 点赞数 String zmid = null;// 评论的消息id String ztime = null;// 评论时间 String zsource = null;// 来源 String ztext = null;// 转发的内容 int cnt = 0; Document doc = Jsoup.parse(html.toString()); Elements RTList = doc.select("div[class =c]"); for (Element result : RTList) {// 解析列表 // 点赞数 zzan = result.select("span[class=cc]").text(); if (zzan.equals("")) {// 过滤没有点赞标签 continue; } zzan = zzan.trim().substring(1).replace("[", "").replace("]", "").replace(" 回复", ""); if (result.select("a").size() > 0) { zname = result.select("a").get(0).text();// 转发的用户名 zid = result.select("a").get(0).toString();// 转发的用户id if (zid.indexOf("u/") == 10) {// 正常的用户id zid = zid.substring(zid.indexOf("\">") - 10, zid.indexOf("\">")); } else { zid = zid.substring(zid.indexOf("/") + 1, zid.indexOf("\">")); } } if (result.text().contains("查看更多热门")) continue; // 转发时间和来源 String tmp = result.select("span[class=ct]").text(); ztime = tmp.substring(0, tmp.indexOf("来自")).replace(" ", ""); zsource = tmp.substring(tmp.indexOf("来自") + 2); // 转发的消息id zmid = result.select("span[class=cc]").toString(); zmid = zmid.substring(zmid.indexOf("attitude") + 9, zmid.indexOf("attitude") + 18); // 转发的内容 ztext = result.text(); if (ztext.contains("//@")) { ztext = ztext.substring(ztext.indexOf(":") + 1, ztext.indexOf("//@")).replace(" ", ""); } else { ztext = ztext.substring(ztext.indexOf(":") + 1, ztext.indexOf(" 举报 ")).replace(" ", ""); } // 用户ID,用户名,消息ID,消息内容,来源,赞数,发布时间 // zid,zname,zmid,ztext,zsource,zzan,ztime cnt++; String wString = zid + "|" + zname + "|" + zmid + "|" + ztext + "|" + zsource + "|" + zzan + "|" + ztime; commentList.add(wString); //logger.info(cnt + ":" + wString); } return commentList; } }
以上是关于新浪微博热门评论抽取规则的主要内容,如果未能解决你的问题,请参考以下文章