// ==UserScript== // @name 郑州房奴助手.js // @namespace http://tampermonkey.net/ // @version 0.2 // @description 郑州住房保障局公示信息统计 预售楼盘价格的统计(统计均价、最高、最低价 同一户型的均价、最高、最低价) // @author You // @match http://*/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @include *://http://218.28.223.8/* // @downloadURL https://update.greasyfork.icu/scripts/427508/%E9%83%91%E5%B7%9E%E6%88%BF%E5%A5%B4%E5%8A%A9%E6%89%8Bjs.user.js // @updateURL https://update.greasyfork.icu/scripts/427508/%E9%83%91%E5%B7%9E%E6%88%BF%E5%A5%B4%E5%8A%A9%E6%89%8Bjs.meta.js // ==/UserScript== (function() { 'use strict'; // map分组函数 function groupBy(array, f) { let groups = {}; array.forEach(function(o) { let group = JSON.stringify(f(o)); groups[group] = groups[group] || []; groups[group].push(o); }); return Object.keys(groups).map(function(group) { return groups[group]; }); } // 郑州住房保障局 function zzzfbzjHandler() { this.addHtmlElements = function() { // var div = document.createElement("div"); // div.innerHTML = "" // document.getElementsByClassName("inner1")[1].appendChild(div); var parentNode = document.getElementsByClassName('main-wrap clearfix')[2]; var beforeNode = document.getElementsByClassName("inner1")[1]; var targetNode = document.createElement("div") targetNode.className = "inner1"; targetNode.style = "width: 100%;" targetNode.innerHTML = "

房奴助手

请先选择楼栋、单元 再
"; parentNode.insertBefore(targetNode, beforeNode); } this.bindEvent = function() { $("#button_0023").on("click", function() { var elements = document.getElementsByClassName("yisou") let datas = []; Array.from(elements).forEach(function(element, index) { var number = element.innerText.match(/编号:(\S*)/)[1]; var price = element.innerText.match(/预售申报价:(\S*)元\/㎡/)[1]; let map = new Map(); map.set("number", Number(number)); map.set("price", Number(price)); map.set("floor", Math.floor(Number(number) / 100)); map.set("room", Number(number) % 10); datas.push(map); }); let rooms = groupBy(datas, function(item) { return item.get("room") }); let floors = groupBy(datas, function(item) { return item.get("floor") }); // 房间统计 var resultHTML = "共" + floors.length + "层 一层" + rooms.length + "户 总计" + datas.length + "个房间"; // 计算均价 let average = datas.map(function(item) { return item.get("price") }).reduce(function(total, current) { return total + current }, 0) / datas.length; resultHTML = resultHTML + " " + "平均价格:" + average.toFixed(2) + "/㎡"; // 找到最贵的 最便宜的 let maxPriceRoom = datas.sort(function(item1, item2) { return item1.get("price") - item2.get("price") })[datas.length - 1]; resultHTML = resultHTML + " " + "最贵的是:" + maxPriceRoom.get("number") + " 价格:" + maxPriceRoom.get("price") + "/㎡"; let minPriceRoom = datas.sort(function(item1, item2) { return item2.get("price") - item1.get("price") })[datas.length - 1]; resultHTML = resultHTML + " " + "最便宜的是:" + minPriceRoom.get("number") + " 价格:" + minPriceRoom.get("price") + "/㎡"; // 找到同户型最贵的 最便宜的 rooms.forEach(function(items) { // 同户型的均价 let average = items.map(function(item) { return item.get("price") }).reduce(function(total, current) { return total + current }, 0) / items.length; resultHTML = resultHTML + "
" + items[0].get("room") + "号房间平均价格:" + average.toFixed(2) + "/㎡"; // 同户型最贵 最便宜 let maxPriceRoom = items.sort(function(item1, item2) { return item1.get("price") - item2.get("price") })[items.length - 1]; resultHTML = resultHTML + " 最贵的是:" + maxPriceRoom.get("number") + " 价格:" + maxPriceRoom.get("price") + "/㎡"; let minPriceRoom = items.sort(function(item1, item2) { return item2.get("price") - item1.get("price") })[items.length - 1]; resultHTML = resultHTML + " 最便宜的是:" + minPriceRoom.get("number") + " 价格:" + minPriceRoom.get("price") + "/㎡"; }) var resultNode = document.getElementById("result_0023"); resultNode.innerHTML = resultHTML; console.log(resultHTML); }); $("#button_0024").on("click", function() { var resultNode = document.getElementById("result_0023"); resultNode.innerHTML = ""; }); console.log("绑定事件ok") } this.start = function() { var pathName = window.document.location.pathname; if (pathName.indexOf("/gov/search.html") >= 0) { this.addHtmlElements(); this.bindEvent(); } } } // 入口函数 var domain = document.domain; console.log("document.domain:", document.domain); switch (domain) { case "218.28.223.8": new zzzfbzjHandler().start(); break; default: console.log("不是目标网站"); } })();