钢笔论坛

标题: 绕了一圈,还是回论坛求助吧 [打印本页]

作者: saji    时间: 2014-2-4 13:29
标题: 绕了一圈,还是回论坛求助吧
各位匿在坛子里的程序猿GG/MM,请赐予于我力量吧!!!!!!

小弟对编程不是很懂,有一点点的编程经验,全是来自于商业化的金融交易软件平台,
因此平时主要关注于算法(偏数学建模),很少关注API。

目前对API的理解几乎等于没有,因此求教各位:
能否用大白话给小弟讲解一下
1、什么是API?
2、它能够干些什么?
3、有哪些入门的资料可以上手?

打个比方,现在很火的比特币在线交易没有专门的客户端,主要是在网站的网页上操作。。。
那么,我们是否有可能编写出软件,接受网站上的实时价格数据,到我们自己的分析软件中,
并根据分析的结果来自动在网页上发出买入和卖出的指令?这个是属于API的范畴吗?

谢谢

作者: saji    时间: 2014-2-4 13:46
另,之前用到过一款名叫“AutoIt”的软件。。。
他可以让用户自定义一些在windows内的操作,编译成脚本后,自动执行。。。

我用它来每天自动登录一款软件,不知道这又算是哪一类的应用
作者: 小手冰凉    时间: 2014-2-4 15:12
问题过于宽泛,还是先明确你到底需要做到什么,再来考虑需要用到什么。很多基本的知识看看度娘即可。
作者: saji    时间: 2014-2-4 17:21
我问题的后半部分不是已经非常具体了吗?
那么,我们是否有可能编写出软件,接受网站上的实时价格数据,到我们自己的分析软件中,
并根据分析的结果来自动在网页上发出买入和卖出的指令?这个是属于API的范畴吗?

作者: saji    时间: 2014-2-4 17:22
本帖最后由 saji 于 2014-2-4 17:23 编辑
小手冰凉 发表于 2014-2-4 15:12
问题过于宽泛,还是先明确你到底需要做到什么,再来考虑需要用到什么。很多基本的知识看看度娘即可。

请看楼上,这就是我想要做到的。。。
请指出哪里有不明确“我需要做到什么”
盼回复

作者: saji    时间: 2014-2-4 17:25
另,基本的API已经查过wiki和gg
觉得都是从技术上来解释的,我希望能够听到比较白话一点的
或是有具体的例子的,谢谢
作者: 小手冰凉    时间: 2014-2-4 17:39
API是预置封装好的提供了一些功能的程序,供你自己写的程序调用,用来完成预置好的那些功能。一般运行在本地模式下。你说的情况估计是WebService方面的问题。只要你能找到能够向提供WebService的比特币平台,你就可以完成相应的买入卖出功能。WebService是对方封装好的接口。对方提供什么功能你才能用什么功能。我觉得你找到对方支持的可能性不大,思路上也是往网页抓取上走。那就没什么好想的了,把自己的程序当成IE,无非就是不停的get post。
作者: saji    时间: 2014-2-4 18:06
谢谢小手兄,我的理解大致是这样的,但是仍有几点疑问:

1、我估计网页提供封装好的webservice的可能性也是不大的,因为几乎没有这方面的需求,因此它不会像商业的交易平台那样,提供现成的API。那么,即使我们能通过网页抓取来获得所需要的价格数据,我们有可能向网页输出数据吗(若是要平台执行买卖,一定是我们向平台输送指令吧)

2、我猜测,网络游戏的外挂也是这种性质的吧?难道游戏也是将API封装好,提供给游戏者,然后再有游戏者通过接口制作成外挂,来进入游戏并执行相关的操作?
作者: saji    时间: 2014-2-4 18:06
小手冰凉 发表于 2014-2-4 17:39
API是预置封装好的提供了一些功能的程序,供你自己写的程序调用,用来完成预置好的那些功能。一般运行在本 ...

谢小手兄,请看楼上

作者: wyffrank    时间: 2014-2-4 18:24
这个用Python,Perl之类的脚本语言分析网页就ok了吧。
作者: saji    时间: 2014-2-4 19:11
wyffrank 发表于 2014-2-4 18:24
这个用Python,Perl之类的脚本语言分析网页就ok了吧。

谢谢,gg了一下,了解的用脚本语言抓取、分析网页的大致意思。。。

那么同样回到前面的问题:
我们通过抓取网页得到了所取的数据,再根据分析的结果,在原来的网页中执行买卖动作,是否可以实现呢?
照小弟的理解,抓取网页,只是一个信息获得的过程,它能实现信息的输出吗?

作者: 小手冰凉    时间: 2014-2-4 20:00
无论是抓取网页还是提交信息,都是由客户端向服务端的一个请求过程,处理方式其实是一样的。客户端向服务器请求的过程一般不是GET就是POST,具体用哪种主要看服务端怎么要求的。get和post并不是字面意义上的获取和提交,其实这2个都是用来提交数据的。浏览器的每次请求完成以后,就与服务器断开了。每个请求都是分离的。这就需要服务器和浏览器都维持一个用于识别彼此身份的key。一般是session。你要做的无非就是用个程序模拟你用浏览器去做的步骤去执行就可以了。采用perl,php,java,.Net,甚至自己写shell都能实现。用一个自己最熟悉的工具就可以。
作者: 小手冰凉    时间: 2014-2-4 20:18
saji 发表于 2014-2-4 18:06
谢谢小手兄,我的理解大致是这样的,但是仍有几点疑问:

1、我估计网页提供封装好的webservice的可能性 ...

1. b2b b2c c2c这些高大上的名词背后,无非就是一些标准或者非标准的webservice提供支持。你没弄清浏览器工作的原理,最好在这方面看看资料。获取网页其实就是不带数据的请求一个网页。提交表单就是带数据的请求一个网页。其实都是客户端向服务器发起请求
2. 网游外挂要“原始”一点,webservice是HTTP协议,是应用层(Application Layer)的协议,传统的网游外挂是基于socket的,属于TCP/IP协议,传输层(Transport Layer)的。模拟游戏客户端向服务器直接发送封包。让服务器以为客户端在进行这些操作。

作者: saji    时间: 2014-2-4 20:20
小手冰凉 发表于 2014-2-4 20:00
无论是抓取网页还是提交信息,都是由客户端向服务端的一个请求过程,处理方式其实是一样的。客户端向服务器 ...

非常感谢,说的很清楚,让我这个程序小白也看的明白{:soso_e181:}

另,关于中文的API编程资料有什么可推荐的?
我搜了一下,只有
Windows API编程范例入门与提高适合入门,
有什么好的推荐吗?

作者: saji    时间: 2014-2-4 20:24
你没弄清浏览器工作的原理,最好在这方面看看资料。


被你发现了。。。小弟不光是不懂浏览器的工作原理,连windows的都不是很清楚
准备花点时间了解一下细节

再次感谢你的帮助{:soso_e181:}
作者: 小手冰凉    时间: 2014-2-4 20:27
程序猿是很苦逼的,知识点散乱,好比凡人修仙。。。  我不推荐直接去看什么api方面的东西,还是先选个门派吧。 java .net php python 就算老朽的Perl,修炼好了一样很 牛b。  我去年硬着头皮修改了个十来年前的vb6的程序,一样能支持webservices。
作者: saji    时间: 2014-2-4 20:36
小手冰凉 发表于 2014-2-4 20:27
程序猿是很苦逼的,知识点散乱,好比凡人修仙。。。  我不推荐直接去看什么api方面的东西,还是先选个门派 ...

我的交易平台语言几乎就是阉割版的C++,因此这个是必须的。。。所谓的有经验,只是语言的表达逻辑稍稍有一点

在看的MIT初级课程都是用python的,但是国内的几本资料都是用vb的。。。{:soso_e127:}

看到哪里算哪里吧,好在只是寻个乐子

作者: sepnber    时间: 2014-2-4 21:51
唉,不写程序好多年。
作者: wyffrank    时间: 2014-2-4 23:10
saji 发表于 2014-2-4 20:20
非常感谢,说的很清楚,让我这个程序小白也看的明白

另,关于中文的API编程资料有什么可 ...

如果不玩windows,没必要跟微软那套吧。你的要求看看脚本语言就够了。python, perl都有很多现成的库。靠网络的东西,除非做客户端,否则都与微软关系不大。

作者: junit    时间: 2014-2-4 23:12
c++还有阉割版?
作者: junit    时间: 2014-2-4 23:12
c++还有阉割版?
作者: ilikehome    时间: 2014-2-4 23:30
技术上,这个东西人家不会给你api。但可以用wireshark进行网络数据分析,获取其操作url。麻烦的是,人家更新url的时候,你也要更新。


业务上,这些交易网站不会实时交易,你提交售出后,会延迟几天售出,到时价格对你没有优势(这个是CCTV说的,我没玩过)。


从你的提问看,你的编程技能还不足以完成这个事情。
作者: saji    时间: 2014-2-5 13:45
技术上,各大交易网站及第三方引擎都给出了价格及交易的API;
业务上,各交易平台都是实时交易,这个不需要CCTV来说,自己交易一下就可以知道的事情;
从你的回答看,你完全不了这个事情。。。{:soso_e141:}
作者: 羽暘    时间: 2014-2-5 14:17
虽然不懂,但楼上对答好逗~
作者: saji    时间: 2014-2-5 14:47
羽暘 发表于 2014-2-5 14:17
虽然不懂,但楼上对答好逗~

我承认,方式有些过激,但实在不吐不快。。。

本来,我们国内的论都是这副样子,撂下一句话就闪。。。
很少见到就事论事的把话题说清楚,

更别说,一知半解的就来下结论的。。。至于参与的动机是什么,我就不想深入了
最后,发帖求助的,必然是不会的。。。会的何必求助

这是我为何感谢小手兄的原因,说的明白,也愿意付出时间及耐心,最后还给出了自己的建议

作者: saji    时间: 2014-2-5 14:50
junit 发表于 2014-2-4 23:12
c++还有阉割版?

拷贝了它的语法,但无法实现其全部的功能。。。。

正如有个男人的外表,但无法实现男人的全部功能,是为“阉割版”。。。

作者: 英熊    时间: 2014-2-5 14:51
junit 发表于 2014-2-4 23:12
c++还有阉割版?

我猜是虽然用C++,但不用OO。

作者: ilikehome    时间: 2014-2-5 19:34
羽暘 发表于 2014-2-5 14:17
虽然不懂,但楼上对答好逗~

哎,最后一句,我只是好心建议。

作者: 羽暘    时间: 2014-2-5 21:12
saji 发表于 2014-2-5 14:47
我承认,方式有些过激,但实在不吐不快。。。

本来,我们国内的论都是这副样子,撂下一句话就闪。。。 ...

汗,小弟纯属外行,可能咱们论坛也不是专业论坛,所以大家的回答不会太系统、专业。兄也不必太往心里去,回答的坛友们也算是献言献策、进些心意啦~

作者: 羽暘    时间: 2014-2-5 21:14
ilikehome 发表于 2014-2-5 19:34
哎,最后一句,我只是好心建议。

惶恐惶恐,小弟属于外行看热闹,随口一说,没有恶了二位的意思哈~

作者: ilikehome    时间: 2014-2-5 21:37
羽暘 发表于 2014-2-5 21:14
惶恐惶恐,小弟属于外行看热闹,随口一说,没有恶了二位的意思哈~

呵呵,明白明白。 {:soso_e113:}


我说“最后一句”,是说我前面说的一段话的最后一句话的意思。






作者: saji    时间: 2014-2-5 21:56
封贴吧~~~




欢迎光临 钢笔论坛 (http://www.penbbs.com/) Powered by Discuz! X3.2