Chrome 行情抓取插件

上班想偷偷摸摸看行情?自己动手写插件啊,尝试写了一个,新建文件夹,命名为StockMonitor,放入文件如下:

  • 3个.png图标文件,19X19、48X48、128X128,命名为19、48、128用作插件图标
  • manifest.json:配置文件
{
    "update_url": "https://clients2.google.com/service/update2/crx",

    "name": "StockMonitor",
    "version": "1.0.0",
    "description": "StockMonitor",
    "manifest_version": 1,
    "browser_action": {
        "default_icon": "19.png",
        "default_title": "StockMonitor",
        "default_popup": "popup.html"
    },
    "icons": {
        "16": "19.png",
        "48": "48.png",
        "128": "128.png"
    },
    "permissions": [
        "http://hq.sinajs.cn/",
        "storage"
    ]
}
  • popup.html:插件主界面
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
        table {
            width: 150px;
            font-size: 10px;
            text-align: center;
        }

        table tr th {
            font-family: 'Courier New', Courier, monospace;
            font-size: 12px;
        }

        .tr-red {
            color: red;
        }

        .tr-green {
            color: green;
        }
    </style>
</head>
<div id="maincontent">
    <table>
        <tr>
            <th>名称</th>
            <th>现价</th>
            <th>涨幅</th>
        </tr>
        <tr id="510300">
            <td>300ETF</td>
            <td>0.000</td>
            <td>-0.00%</td>
        </tr>
        <tr id="601288">
            <td>农业银行</td>
            <td>0.000</td>
            <td>+0.00%</td>
        </tr>
        <tr id="000157">
            <td>中联重科</td>
            <td>0.000</td>
            <td>+0.00%</td>
        </tr>
    </table>
</div>
<div>
    <script type="text/javascript" charset="utf-8" src='jquery.min.js'></script>
    <script type="text/javascript" charset="utf-8" src='refresh.js'></script>
</div>

</html>
  • refresh.js:数据获取脚本
var stock = {
    format_number: function(s, n) {
        n = n > 0 && n <= 20 ? n : 2;
        s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
        var l = s.split(".")[0].split("").reverse(),
            r = s.split(".")[1];
        t = "";
        for (i = 0; i < l.length; i++) {
            t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
        }
        return t.split("").reverse().join("") + "." + r;
    },
    init: function() {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4) {
                var quoteStr = xmlhttp.responseText;
                quoteStr = quoteStr
                    .replace(/var hq_str_s_sz/g, '')
                    .replace(/var hq_str_s_sh/g, '')
                    .replace(/=/g, ',')
                    .replace(/"/g, '')
                    .replace(/\n/g, '')
                    .replace(/\r\n/g, '');
                quoteStr = quoteStr.substr(0, quoteStr.length - 1);
                var quotes = quoteStr.split(';');
                for (var i = 0; i < quotes.length; i++) {
                    var quote = quotes[i].split(',');
                    var code = quote[0]; //代码
                    var price = parseFloat(quote[2]); //价格
                    var pct = quote[4]; //百分比
                    console.log(quote[4] + ',' + pct);

                    var tr = document.getElementById(quote[0]);
                    tr.children[1].innerText = stock.format_number(price, 3);
                    if (pct < 0) {
                        tr.setAttribute('class', 'tr-green');
                        tr.children[2].innerText = quote[4] + '%';
                    } else {
                        tr.setAttribute('class', 'tr-red');
                        tr.children[2].innerText = '+' + quote[4] + '%';
                    }
                }
            }
        }
        xmlhttp.open("GET", "http://hq.sinajs.cn/rn=1522216317579&list=s_sh510300,s_sh601288,s_sz000157", true);
        xmlhttp.send();
    }
};

window.onload = function() {
    stock.init();
}

在扩展程序里加载已解压的扩展程序即可使用,想打包什么的自行百度~

Chrome 行情抓取插件的更多相关文章

  1. Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)

    概述 前面的一篇博文粗略介绍了基于lazyUI的第一个demo,本文将详细描述此工具的设计和使用. 元素获取插件:LazyUI Elements Extractor,作为Chrome插件,用于抓取页面 ...

  2. Java 实现 HttpClients+jsoup,Jsoup,htmlunit,Headless Chrome 爬虫抓取数据

    最近整理一下手头上搞过的一些爬虫,有HttpClients+jsoup,Jsoup,htmlunit,HeadlessChrome 一,HttpClients+jsoup,这是第一代比较low,很快就 ...

  3. Web UI 自动化单个xpath抓取插件详解

    原文地址http://blog.csdn.net/kaka1121/article/details/51878346 单个控件获取 需求: 右键到某个控件上,就能获取到至多三个可以唯一定位该元素的相对 ...

  4. Chrome + Python 抓取动态网页内容

    用Python实现常规的静态网页抓取时,往往是用urllib2来获取整个HTML页面,然后从HTML文件中逐字查找对应的关键字.如下所示: import urllib2 url="http: ...

  5. 玩爽了!直接在Chrome里抓取数据

    一个小测试发现可以自动做题,于是想通过脚本的方式看能不能获取相应的题库,刚好可以学习一下JS异步操作.花了一天时间,总算跑顺利了,遇到了不少坑.记录下来分享. 1.JS如何顺序执行 JS有强大的异步操 ...

  6. 直接在Chrome里抓取数据

    一个小测试发现可以自动做题,于是想通过脚本的方式看能不能获取相应的题库,刚好可以学习一下JS异步操作.花了一天时间,总算跑顺利了,遇到了不少坑.记录下来分享. 1.JS如何顺序执行 JS有强大的异步操 ...

  7. python 多线程抓取动态数据

    利用多线程动态抓取数据,网上也有不少教程,但发现过于繁杂,就不能精简再精简?! 不多解释,直接上代码,基本上还是很好懂的. #!/usr/bin/env python # coding=utf-8 i ...

  8. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案之使用RTSP流判断摄像机设备是否在线以及快照抓取

    背景分析 熟知EasyNVR产品的小伙伴都知道,通过纯Web化的交互方式,只要配置出摄像机的IP.端口.用户名.密码等信息,就可以将地址进行通道配置完成,即可将设备接入.如果设备支持Onvif协议,E ...

  9. fiddler无法抓取chrome解决方法

    前端开发中,不可避免的要和服务器端进行联调,少了fiddler这个利器可不行. 由于无线开发需要配置UA,我使用chrome进行访问,但是今儿一早过来,发现fiddler无法抓取chrome的请求了. ...

随机推荐

  1. dubbo之多协议

    (1) 不同服务不同协议 比如:不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议 consumer.xml <?xml version="1.0& ...

  2. 2星|《工业X.0》:物联网的资料汇编

    工业X.0:实现工业领域数字价值 看完比较失望,没有看到新的观点想法.基本算是物联网的资料汇编.总体评价2星. 以下是书中一些内容的摘抄: 1:例如,埃森哲为其员工开发了一个用例,用增强现实技术解决实 ...

  3. java Web(4)

    Web 应用程序状态管理 通过隐藏表单域 hidden,cookie,session,重写URL来实现: cookie存在于客户端,浏览器关闭时失效 cookie原理:服务器在响应请求时将一些数据以“ ...

  4. 图像的全局特征--HOG特征、DPM特征

    HOG特征:方向梯度直方图(Histogram of Oriented Gradient,)特征是一种全局图像特征描述子. 它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM ...

  5. 关于MySQL Server影响ASP.NET网站使用的问题:未能加载文件或程序集MySql.Web.v20

    最近开发的ASP.NET MVC 4网站,之前头头说如果遇到装过MySQL的机器就绕着走,还觉得奇怪 嘛,该来的迟早都会来 于是撞上了一台 启动网站再访问,总是出错,提示“未能加载文件或程序集”,名字 ...

  6. eas之树

    如何设置树的深度(即树总共有几级) // 设置树的深度为3,即树包括0.1.2三级结点 table.getTreeColumn().setDepth(3); 如何设置树的方向 树的方向包括两种:自上向 ...

  7. mysql查询表里的重复数据

    先贴个简单的SQL语句 select username,count(*) as count from hk_test group by username having count>1; 使用详情 ...

  8. ldap 禁止匿名登录(5)

    [root@zabbix1 ~]# cat disable_anon.ldif dn: cn=config changetype: modify add: olcDisallows olcDisall ...

  9. 21.实验基于_version进行乐观锁并发控制

    21.实验基于_version进行乐观锁并发控制 主要知识点: 实验基于_version进行乐观锁并发控制 1.实验实战演练基于_version进行乐观锁并发控制 (1)先构造一条数据出来 PUT / ...

  10. lucene_08_solr导入数据库数据

    一步:在solr家目录中导入 下图的jar包 第二步:配置solr 家目录 solr_home\collection1\conf\solrconfig.xml.在config标签下加入requestH ...