ICAT技术 阅读:1074评论: 0 2018-05-31

Jsoup 是一个 Java 的开源HTML解析器,可直接解析某个URL地址、HTML文本内容,Jsoup官网jar包下载地址

 下面直接上代码

public static void main(String[] args) {
		try {
			Document doc = Jsoup.connect("http://neihanshequ.com/").data("query", "Java").userAgent("my jsoup")
					.cookie("auth", "token").timeout(3000).get();
			/**
			 * 去除内涵段子主页注释 内涵段子官网已经禁用,但是只是把注释掉了,所有使用下面方法去除所有注释
			 */
			String ds = doc.toString().replaceAll("<!--", "").replaceAll("-->", "");
			/**
			 * 通过html标签来获取内容 获取div的class属性值为detail-wrapper
			 */
			Elements elements = Jsoup.parse(ds).select("div[class=detail-wrapper]");
			// 开始遍历抓取内容
			for (int i = 0; i < elements.size(); i++) {
				// id
				String id = elements.get(i).select("a[class=image share_url]").attr("data-group-id");
				// 内容
				String comments = elements.get(i).select("li[class=share-wrapper right]").attr("data-text");
				// 点赞
				String digg = elements.get(i).select("div[class=options]").select("span[class=digg]").text();
				// 点踩
				String bury = elements.get(i).select("div[class=options]").select("span[class=bury]").text();
				// 收藏
				String repin = elements.get(i).select("div[class=options]").select("span[class=repin]").text();
				// 分享
				String share = elements.get(i).select("span[class=share]").text();
				// 评论数量
				String comment_count = elements.get(i).select("span[class=comment J-comment-count]").text();
				// 通过http请求调用接口返回一个JSON数组
				String comment = HttpGetRequestUtil.doGet("http://neihanshequ.com/m/api/get_essay_comments/?group_id="
						+ id + "&app_name=neihanshequ_web&offset=0");
				if (StrKit.notBlank(comment)) {
					// 转换为json
					JSONObject object = JSONObject.parseObject(comment);
					if (object.containsKey("data")) {
						JSONObject jsonObject = object.getJSONObject("data");
						// 数组分为2部分,一部分为热评论,还有一部分为普通评论
						if (jsonObject.containsKey("top_comments")) {
							JSONArray array = jsonObject.getJSONArray("top_comments");
							for (int j = 0; j < array.size(); j++) {
								String text = array.getJSONObject(j).getString("text");
								Integer bury_count = array.getJSONObject(j).getIntValue("bury_count");
								Integer digg_count = array.getJSONObject(j).getIntValue("digg_count");
								Long create_time = Long
										.valueOf(array.getJSONObject(j).getString("create_time") + "000");
								System.out.println(
										text + "\n" + bury_count + "\n" + digg_count + "\n" + create_time + "\n");
								System.out.println("--------------------------------");
							}
						} else {
							JSONArray array = jsonObject.getJSONArray("recent_comments");
							for (int j = 0; j < array.size(); j++) {
								String text = array.getJSONObject(j).getString("text");
								Integer bury_count = array.getJSONObject(j).getIntValue("bury_count");
								Integer digg_count = array.getJSONObject(j).getIntValue("digg_count");
								Long create_time = Long
										.valueOf(array.getJSONObject(j).getString("create_time") + "000");
								System.out.println(
										text + "\n" + bury_count + "\n" + digg_count + "\n" + create_time + "\n");
								System.out.println("--------------------------------");
							}
						}
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

这样运行你就会看到后台打印的评论的数据了

image.png


转载请注明来源:

评论