用知网简单查找论文信息

功能

  • 通过用户输入的关键词查找相关论文信息
  • 利用CNKI知网的多个学位论文数据库,查找论文
  • 返回与关键词相似的论文信息包括:
    • 相似的论文题目
    • 作者信息
    • 论文性质
    • 论文来源
    • 论文发表时间
    • 论文下载次数
    • 论文相似句子

使用

  • 编译
    1
    javac GETcnki.java
  • 执行
    1
    java GETcnki 内幕交易 实证分析 "Rezaul Kabir" 阿姆斯特丹
  • 效果
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    正在通过CNKI查找内容相似的论文。。。
    关键词:内幕交易 实证分析 Rezaul Kabir 阿姆斯特丹

    0:股票市场失灵与政府行为选择 宋玉臣 博士
    吉林大学 2006-10-01 下载频次:1311
    句子1:其次,实证分析方面,对宏观内幕交易和微观内幕交易分别进行了实证研究。
    句子2:Rezaul Kabir和Theo Vermaelen(1996)对荷兰阿姆斯特丹股票市场进行的实证分析,通过检验年报公布前两个月的股票流动性来检验内幕交易对股票价格的影响,结论是认为该市场存在内幕交易并支持政府限制内幕交易;

    1:我国股票市场内幕交易的实证研究 刘晓明 硕士
    暨南大学 2008-05-01 下载频次:597
    句子1:暨南大学硕士论文我国股票市场内幕交易的实证研究5内幕交易案例分析及原因分析按内幕交易的主体,可以将内幕人分为证券内幕信息的知情人员(第一内幕人),从内幕信息知情人员获得内幕信息的第二内幕人和非法获取内幕信息的人。
    句子2:李心丹(2007)通过建立内幕交易行为动机结构模型,实证分析了影响内幕交易行为发生的多种因素,指出高额的期望收益和跟风攀比心态的存在极大的强化了内幕交易主体从事内幕交易的倾向,而实施内幕交易引发的内疚感、导致社会声誉的受损、被查处的力度和被惩罚的力度,特别是查处力度与惩罚力度,在相当程度上弱化了内幕主体实施内幕交易的行为倾向。

    2:股票市场内幕交易及量价波动的实证研究 陈婧 硕士
    南京理工大学 2007-06-01 下载频次:535
    句子1:Rezaul Kabir和Theovermaelen(1996)对荷兰阿姆斯特丹股票市场进行的实证分析,通过检验禁止内幕交易后股票流动性来检验其对股票市场的影响,发现限制内幕交易减少了股票的流动性(用交易量衡量流动性),同时还发现市南京理工大学硕士学位论文股票市场内幕交易及量价波动的实证研究场对利好消息的反应速度减慢。
    句子2:8.3进一步研究方向尽管本文对内幕交易进行了比较全面、细致的实证分析,但是有关内幕交易的研究仍然有待深入。

    3:我国证券市场内幕交易对投资者利益影响的实证分析 张宇 硕士
    西南大学 2011-04-05 下载频次:240
    句子1:西南大学硕士学位论文第5章内幕交易实证分析第5章内幕交易实证分析上一章已经大致介绍了运用事件研究法的步骤,本章就以西南证券(印0369)为例,进行实验研究分析。
    句子2:Theovermaelen(1996)对荷兰阿姆斯特丹股票市场进行了股票流动性与内幕交易的关系进行了实证分析,通过检验禁_l卜内幕交易后股票流动性来检验其对股票市场的影响发现,当内幕交易被限制了股票的流动性减少了,此时市场对利好消息的反应速度也减慢。

java 代码

  • 说明:主要是要保存第一次的GET请求COOKIES,用于设置于第二个GET请求
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;

    import java.lang.Integer;

    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLEncoder;

    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class GETcnki {
    public static void readContentFromGet(String GET_URL) {
    String lines;
    URL cnkiURL = null;

    try {
    cnkiURL = new URL(GET_URL);
    } catch (java.net.MalformedURLException e) {
    e.printStackTrace();
    readContentFromGet(GET_URL);
    }

    List<String> cookies = null;
    StringBuffer response = new StringBuffer();

    // 打开连接,URL.openConnection函数会根据URL的类型,
    // 返回不同的URLConnection子类的对象,URL是http,返回HttpURLConnection
    try {
    HttpURLConnection connection = (HttpURLConnection) cnkiURL.openConnection();

    connection.setRequestProperty("User-Agent",
    "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:29.0) Gecko/20100101 Firefox/29.0");
    connection.connect();
    /*
    String headerName = null;
    for (int i = 1; (headerName = connection.getHeaderFieldKey(i)) != null;
    i++) {
    System.out.println(headerName + ":" + connection.getHeaderField(i));
    }
    */
    cookies = connection.getHeaderFields().get("Set-Cookie");

    BufferedReader reader = new BufferedReader(new InputStreamReader(
    connection.getInputStream(), "utf-8"));

    while ((lines = reader.readLine()) != null) {
    response.append(lines);
    }

    reader.close();
    connection.disconnect();

    //System.out.println("----------\n"+response);
    } catch (java.io.IOException e) {
    e.printStackTrace();
    readContentFromGet(GET_URL);
    }

    //---------------------------
    URL cnkiURL2 = null;

    try {
    cnkiURL2 = new URL(
    "http://epub.cnki.net/KNS/brief/brief.aspx?pagename=" +
    response.toString());
    } catch (java.net.MalformedURLException e) {
    e.printStackTrace();
    readContentFromGet(GET_URL);
    }

    StringBuffer response2 = new StringBuffer();

    try {
    HttpURLConnection con = (HttpURLConnection) cnkiURL2.openConnection();

    con.setRequestProperty("User-Agent",
    "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:29.0) Gecko/20100101 Firefox/29.0");
    con.setRequestProperty("Referer",
    "http://epub.cnki.net/KNS/brief/result.aspx?dbprefix=CDMD");

    String newcookies = "";

    for (String cookie : cookies) {
    newcookies += (cookie.substring(0, cookie.indexOf(";")) + ";");
    }

    //System.out.println("newcookies:" + newcookies);
    //ASP.NET_SessionId=oaxxoh3bazgbhcuei5aharzk; LID=; SID_kns=120113
    con.addRequestProperty("Cookie", newcookies);
    /*
    for (String header : con.getRequestProperties().keySet()) {
    if (header != null) {
    for (String value : con.getRequestProperties().get(header)) {
    System.out.println(header + ":" + value);
    }
    }
    }
    */
    con.connect();

    BufferedReader reader2 = new BufferedReader(new InputStreamReader(
    con.getInputStream(), "utf-8"));

    while ((lines = reader2.readLine()) != null) {
    response2.append(lines);
    }

    reader2.close();
    con.disconnect();

    } catch (java.io.IOException e) {
    e.printStackTrace();
    readContentFromGet(GET_URL);
    }

    String info = response2.toString();

    //句子&nbsp;1([\s\S]+?)句子来
    List<String> sentences = GETcnki.StrMatch(info,
    "句子&nbsp;1([\\s\\S]+?)句子来");

    for(int i =0;i<sentences.size();i++){
    //去除标签
    sentences.set(i,sentences.get(i).replaceAll("<[^>]*>",""));

    //分段
    Matcher mat =
    Pattern.compile("句子&nbsp;").matcher(sentences.get(i));
    while (mat.find())
    sentences.set(i,
    sentences.get(i).replaceAll("句子&nbsp;","\n句子"));

    sentences.set(i,"句子1"+sentences.get(i));

    }

    int i = 0;
    //har\('(.+?)'
    List<String> titles = GETcnki.StrMatch(info, "har\\('(.+?)'");
    //作者.+?">(.+?)<
    List<String> auhtors = GETcnki.StrMatch(info, "作者.+?\">(.+?)<");
    //文献来源.+?">(.+?)<
    List<String> literatures = GETcnki.StrMatch(info, "文献来源.+?\">(.+?)<");
    //en.{2}发表时间.+?>(.+?\b)<
    List<String> dates = GETcnki.StrMatch(info, "en.{2}发表时间.+?>(.+?\\b)<");
    //下载频次.+?>([\d]*)
    List<String> downloadfrequencys =
    GETcnki.StrMatch(info,"下载频次.+?>([\\d]*)");
    //来源库.+?>(.+?)[\s]+?<
    List<String> databases =
    GETcnki.StrMatch(info,"来源库.+?>(.+?)[\\s]+?<");

    for(i =0;i<sentences.size();i++){
    System.out.println(i + ":" + titles.get(i)
    +" "+auhtors.get(i)+" "+databases.get(i)
    +"\n"+literatures.get(i)+" "+dates.get(i)
    +" 下载频次:"+downloadfrequencys.get(i)+"\n"+sentences.get(i)+"\n");
    }
    }

    public static List<String> StrMatch(String raw, String regex) {
    List<String> result = new ArrayList<String>();

    Pattern pat = Pattern.compile(regex);
    Matcher mat = pat.matcher(raw);

    if (mat.find()) {
    //System.out.println("---\n"+mat.group(1)+"---\n");
    result.add(mat.group(1));

    while (mat.find())
    //System.out.println("---\n"+mat.group(1)+"---\n");
    //捕获组是从 1 开始从左到右的索引
    result.add(mat.group(1));
    } else {
    return result;
    }

    return result;
    }

    public static String encodeURIComponent(String component) {
    String result = null;

    try {
    result = URLEncoder.encode(component, "UTF-8")
    .replaceAll("\\%28", "(").replaceAll("\\%29", ")")
    .replaceAll("\\+", "%20").replaceAll("\\%27", "'")
    .replaceAll("\\%21", "!").replaceAll("\\%7E", "~");
    } catch (UnsupportedEncodingException e) {
    result = component;
    }

    return result;
    }

    public static void main(String[] args) {

    String[] s={"","","",""};
    System.out.print("正在通过CNKI查找内容相似的论文。。。\n关键词:");

    if(args.length != 4){
    System.err.println("请输入四个字符串!");
    return ;
    }

    for(int i =0 ;i<args.length;i++){
    if(args[i].length() == 0 ){
    System.err.println("\n请不要输入空字符串!");
    return ;
    }
    s[i] = encodeURIComponent(args[i]);
    System.out.print(args[i]+" ");
    }
    System.out.println("\n");

    String GET_URL = "http://epub.cnki.net/KNS/request/SearchHandler.ashx?" +
    "action=&NaviCode=*&ua=1.21&PageName=ASP.brief_result_aspx&DbPrefix=CDMD" +
    "&DbCatalog=中国优秀博硕士学位论文全文数据库" + "&ConfigFile=CDMD.xml" +
    "&db_opt=中国优秀博硕士学位论文全文数据库" +
    "&db_value=中国博士学位论文全文数据库,中国优秀硕士学位论文全文数据库" +
    "&sen_1_sel=%2FNEAR%2020&sen_1_value1=" + s[0] + "&sen_1_value2=" +
    s[1] + "&sen_2_sel=%2FSEN%2020&sen_2_value1=" + s[2] +
    "&sen_2_value2=" + s[3] + "&sen_2_logical=and" +
    "&his=0&issen=1&__=Mon%20Jun%2009%202014%2022%3A15%3A59%20GMT%2B0800%20(CST)";

    /*ConfigFile CDMD.xml
    DbCatalog 中国优秀博硕士学位论文全文数据库
    DbPrefix CDMD
    NaviCode *
    PageName ASP.brief_result_aspx
    __ Tue Jun 10 2014 12:08:21 GMT+0800 (CST)
    action
    db_opt 中国优秀博硕士学位论文全文数据库
    db_value 中国博士学位论文全文数据库,中国优秀硕士学位论文全文数据库
    his 0
    issen 1
    sen_1_sel /NEAR 20
    sen_1_value1 信息
    sen_1_value2 某种程度
    sen_2_logical and
    sen_2_sel /SEN 20
    sen_2_value1 证券市场
    sen_2_value2 最具敏感性
    ua 1.21
    */
    GETcnki gs = new GETcnki();

    gs.readContentFromGet(GET_URL);
    }
    }