zoukankan      html  css  js  c++  java
  • 新浪微博热门评论抽取规则

    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;
        }
    
    }
  • 相关阅读:
    SpringData JPA @Query动态SQL语句,且分页
    Springboot项目修改html后不需要重启---springboot项目的热部署
    sqlserver如何进行日期转换
    导入项目时候出现 Description Resource Path Location Type Cannot change version of project facet Dynamic Web Module to 2.5错误
    Intellij IDEA和Eclipse之间的常用快捷键
    Java 集合转换(数组、List、Set、Map相互转换)
    oracle日期格式转换 to_date(),to_char()
    java数据缓存
    VMware14安装Centos8详细教程图解教程
    CentOS7 安装Xfce桌面环境
  • 原文地址:https://www.cnblogs.com/zeze/p/6105764.html
Copyright © 2011-2022 走看看