我的学习笔记01-从工行网页抓取白银价格

来源:互联网 发布:串行12864接单片机 编辑:程序博客网 时间:2024/04/28 17:32

/**

本人是一名业余爱好者,水平是用java敲一个hello world都需要思考几秒的菜鸟,所以肯定有比我所用方法更优的解决方法,欢迎指点。

学习思路:以具体实用项目为目标,分析问题,收集资料,快速学习。先得到与任务紧密联系的广泛、片段的知识,完成任务后,再对感兴趣的部分深入挖掘。特点是敏捷有成就感。

学习辅助工具:番茄钟app

**/


目标:一个纸白银app。功能:抓取显示当前纸白银价格,并与自己的设定值比较,触线则闹铃提醒进行交易。


任务分解:1 抓取 2 比较 3 闹钟

虽然现在还不会android下的比较和闹钟,但感觉不难学会。重点在抓取。


探索抓取的解决方法。

前期弯路:

正常应该是典型的C/S结构,数据来自数据库,主要工作在客户端开发。但实时的白银价格数据库我没有,此路不通。

1 发现绝大部分白银数据来源来自网站www.kitco.cn,免费提供网站嵌入曲线gif图,一分钟刷新一次。很方便,HTML下<img src="http://www.kitconet.com/images/quotes_2a.gif" >就可以了,但数据是图片,没有单纯的数值源,若要抓取,需要模式识别知识,如果问题解决了,一般网站验证码也就形同虚设了,目测难度很大。

2 百度“白银价格”,可以得到数值,来源是与企业的合作,百度提供“开发平台”,企业提供符合百度格式的数据,价格更新较慢,而且用浏览器查看网页源码,发现结构比较复杂。

3 工行数据准确,提供数值,特定页面流量小,适合抓取。


白银价格来源:http://www.icbc.com.cn/ICBCDynamicSite/Charts/GoldTendencyPicture.aspx

工具:jsoup。jsoup是一个开源java库,可以通过url抓取HTML内容,并进行parse(解析)。也方便在android下应用。官网:http://jsoup.org/。本想兴致勃勃的把其翻译了,写一篇翻译文章,结果发现已经有翻译好的了:http://www.open-open.com/jsoup/


由于是零基础,所以在jsoup前,花了两天时间学习了下HTML,CSS,JAVASCRIPT的简单基础知识。推荐:w3school。感觉HTML,CSS就是文本编辑,不算编程,难度不大;javascript好上手,功能强大,看到cookie没看了,后面继续。jsoup提供手册和源码,是一个极好的学习资料。其称手册为“cookbook",哈,第一次听到把code比作cook recipe实在MIT网络课程讲python的一节课上,很喜欢。每一个好的程序员都是一位好大厨!


jsoup的第一次使用

安装

来源:jsoup.org

内容:jsoup-1.7.2.jar;jsoup-1.7.2-source.jar

怎么使用?(太基础了,cookbook没讲,零基础伤不起,大神勿喷)

错误尝试:

环境:WIN7 64bit; ECLIPSE adt-bundle-windows-x86-20130219;JAVA 1.7.0_15;

直接粘贴到java文件夹下jre,import报错。

成功尝试:

1 在自己的项目下新建一个文件夹“lib”


2 eclipse 项目右键,refresh


3 refresh后效果


4 build path


5 导入成功


6 敲了一个Jsoup的例子程序,解析的是baidu。例子中子函数是在尾部,报错,移到头部就好了。


7 从org学习API,发现最直接的是得到body的string,得到如下串:


8 急补java String的知识,从长串中提取特定信息。成功!看到4.27那一刻,我很激动!一个周末的成果。


决定在app出来后,好好把Jsoup的源码研究一下。


原创粉丝点击