`
cqh520llr
  • 浏览: 510223 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

获取同花顺的数据

 
阅读更多
package com.mengya.store.gp;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.logging.LogFactory;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import java.util.logging.Level;

/**
 * 同花顺
 */
@Slf4j
public class JsoupUtil {

    public static String THS_DATA = "http://q.10jqka.com.cn/";
    public static String THS_URL = "http://q.10jqka.com.cn/index/index/board/all/field/zf/order/desc/page/%d/ajax/1/";

    public static void main(String[] args) {

        //WebDriver driver = new ChromeDriver();   //Firefox浏览器
        //driver.get(THS_DATA);

        try {
            // 屏蔽HtmlUnit等系统 log
            //LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log","org.apache.commons.logging.impl.NoOpLog");
            java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
            java.util.logging.Logger.getLogger("org.apache.http.client").setLevel(Level.OFF);


            String url = "http://localhost/ths";
            WebClient webClient = new WebClient();
            webClient.getOptions().setJavaScriptEnabled(true); //启用JS解释器,默认为true
            webClient.getOptions().setCssEnabled(false); //禁用css支持
            webClient.getOptions().setThrowExceptionOnScriptError(false); //js运行错误时,是否抛出异常
            HtmlPage page = webClient.getPage(url);
            webClient.waitForBackgroundJavaScript(3*1000);
            String pageXml = page.asXml(); //以xml的形式获取响应文本
            String json = pageXml.substring(pageXml.indexOf("<div id=\"content\">"), pageXml.indexOf("</div>")).replace("<div id=\"content\">", "");
            String hexinV = json.trim();
            Connection.Response referer = Jsoup.connect(THS_DATA).header("Referer", THS_DATA).execute();
            Document document = referer.parse();
            Map<String, String> cookies = referer.cookies();
            String pageInfo = document.getElementsByClass("page_info").html();
            if (pageInfo.indexOf("/") > 0) {
                int total = Integer.parseInt(pageInfo.split("/")[1]);
                log.info("========>" + total);
                for (int s = 1; s <= total; s++) {
                    String thsUrl = String.format(THS_URL, s);
                    Connection.Response execute = Jsoup.connect(thsUrl)
                            .cookies(cookies)
                            .header("hexin-v", hexinV)
                            .header("Referer", "http://q.10jqka.com.cn/").execute();
                    log.info(":::" + execute.cookies());
                    document = execute.parse();
                    Elements body = document.getElementsByTag("tbody").get(0).getElementsByTag("tr");
                    for (int i = 0; i < body.size(); i++) {
                        Element element = body.get(i);
                        Elements children = element.children();
                        StringBuilder builder = new StringBuilder();
                        for (int j = 0; j < children.size(); j++) {
                            builder.append(children.get(j).text()).append("....");
                        }
                        log.info("==>" + builder);
                    }
                }
            }
        } catch (Exception e) {
            log.error("JsoupUtil print:", e);
        }
        //getHexin();
    }

    public static String getHexin() {
        try {
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine script = manager.getEngineByName("javascript");
            File file = new File("I:\\mengya\\src\\main\\java\\com\\mengya\\store\\gp\\ths.js");
            if (!file.exists()) {
                file = new File("C:\\m.js");
            }
            FileReader reader = new FileReader(file);
            script.eval(reader);//执行js,但是可能文件中有多个函数
            if (script instanceof Invocable) {
                Invocable invoke = (Invocable) script;
                Object result = invoke.invokeFunction("getHexin");//执行js文件中的指定函数
                log.info("result:" + result);
                /*ScriptObjectMirror mirror = (ScriptObjectMirror) result;
                Set<Map.Entry<String, Object>> set = mirror.entrySet();
                set.forEach(e -> {
                    ScriptObjectMirror v = (ScriptObjectMirror) e.getValue();
                    return v.entrySet();
                });*/
                reader.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

分享到:
评论

相关推荐

    python获取同花顺涨停连板跌停数据

    python获取同花顺涨停连板跌停数据

    同花顺自动下载xls数据.rar_dirtyqj2_python_同花顺_获取同花顺期货历史行情csv格式文件

    标题中的“同花顺自动下载xls数据.rar_dirtyqj2_python_同花顺_获取同花顺期货历史行情csv格式文件”表明这是一个使用Python编写的自动化脚本,目的是从同花顺金融终端下载期货历史行情数据,并将这些数据保存为CSV...

    C#读取股票日线数据(同花顺版)

    首先,要获取同花顺的股票日线数据,你需要安装同花顺软件。该软件通常会提供API接口或数据导出功能,以便用户能够方便地获取和分析数据。在安装完成后,你可以在软件内找到历史数据下载选项,选择你需要的股票代码...

    同花顺实盘数据API

    同花顺实盘API接口,可以抓取实盘账户的交易数据和资金数据!

    同花顺、通达信数据格式

    在IT行业中,尤其是在金融数据分析领域,同花顺和通达信是两个非常知名的专业股票软件。它们提供了丰富的股票数据和分析工具,深受投资者和分析师的喜爱。这两种软件的数据格式是其核心竞争力之一,对于理解市场动态...

    同花顺日线数据文件读取器

    《同花顺日线数据文件读取器:深入解析与应用》 同花顺日线数据文件读取器是一款专为金融投资爱好者和专业人士设计的工具,它能够帮助用户高效地读取并分析同花顺提供的历史股票日线数据。在金融市场中,历史数据是...

    爬取同花顺网站中上市公司财务报表数据(可用)

    在爬取同花顺数据时,确保你尊重网站的robots.txt文件,不进行大规模无节制的抓取,并且如果可能,获取网站的爬虫许可。 在压缩包文件"THS-spider-master"中,可能包含了以下内容: 1. `ths_spider.py`:主爬虫...

    Python爬取同花顺每日股票公告信息实例

    同花顺是中国知名的金融信息服务提供商,其提供的股票公告数据对于投资者来说具有很高的价值。 首先,我们需要了解Scrapy。Scrapy是一个用Python编写的高级爬虫框架,它提供了一整套方便的数据提取和处理机制,包括...

    Python-Funcat将同花顺通达信等的公式写法移植到了Python中

    3. **数据加载**:使用 Funcat 的数据接口,如 `fc.load_tushare()` 加载同花顺数据。 4. **公式应用**:使用同花顺或通达信的公式语法,例如 `close = df['close']` 获取收盘价,然后计算指标 `macd = fc.MACD...

    c# Winform 问财数据获取源码(包括v值获取)

    本文将详细介绍如何利用C# Winform开发一个应用程序,用于获取同花顺问财的数据,并进行相关操作,如数据展示、过滤及Excel保存。 首先,我们要了解“问财”这一平台。问财是同花顺旗下的一款财经搜索引擎,提供...

    同花顺下载A上市公司年报财务数据

    同花顺作为知名的金融信息服务提供商,提供了这样一个便捷的方式,让用户能够集中获取这些重要信息,而无需逐一从各个公司的公告中下载。 描述中提到的财务表包括了现金流量表、资产负债表和利润表,这些都是企业...

    导入同花顺数据 c++ log4cpp nlohmann::json mysql

    1. 使用C++编写程序,通过HTTP请求或其他方式从同花顺接口获取数据,数据可能以JSON格式返回。 2. 利用nlohmann::json库解析接收到的JSON数据,提取出需要的部分,如股票代码、日期、开盘价、收盘价等。 3. 使用log4...

    同花顺炒股软件

    同花顺是市场上行情交易最快、数据最全、性能最优、最受股民欢迎的免费炒股软件;是一个提供行情显示、行情分析和行情交易的股票软件。精选最优的财经资讯,查看免费的资金动向,资讯最准,速度最快。同花顺炒股软件...

    同花顺手机炒股 v8.82.01

    同花顺手机炒股的理念为让你更加快速、安全、轻松、便捷地进行投资,让你享受最为专业、最为及时、最为全面的数据信息服务。3G版除了行情走势、股票排行、委托交易、基金行情、全球市场、精品资讯、专家论股等常用...

    wine安装同花顺远航版界面乱码解决

    在Linux系统中, Wine 是一个兼容层软件,它允许用户在类UNIX操作系统上运行Windows应用程序。...对于同花顺远航版这样的金融软件,确保正确显示股票代码和市场数据是非常关键的,因此这个问题的解决至关重要。

    c#编写股票量化,掘金量化接口,获取股票行情,同花顺版块数据等

    c#编写股票量化,掘金量化接口,获取股票行情,同花顺版块数据等。

    采集同花顺基金评论数据教程共15页.pdf.zip

    标题中的“采集同花顺基金评论数据教程”表明这是一份关于从同花顺平台抓取基金评论数据的教程,而“共15页.pdf.zip”提示这份教程包含15页内容,且是以PDF格式压缩成ZIP文件的形式存在。标签进一步确认了教程的主题...

    Funcat 将同花顺、通达信、文华财经麦语言等的公式写法移植到了 Python 中

    它提供了与同花顺、通达信、文华财经等金融软件相似的函数和语法,使得熟悉这些软件的用户能无缝过渡到Python编程。 2. **numpy 库**: numpy是Python科学计算的基础库,提供了大量的数学和逻辑运算功能,以及高效...

    同花顺2018届校园招聘笔试题目2017年

    ### 一、同花顺校园招聘笔试题目解析 #### 1. 静态资源部署至CDN上 - **定义**:CDN(Content Delivery Network)即内容分发网络,是一种互联网内容传输加速的技术和服务。通过在现有的Internet中增加一层新的网络...

Global site tag (gtag.js) - Google Analytics