安卓-抓取教务系统成绩-1-成绩成功存入数据库(回忆)

WHUGPAGetter项目日志

2014.10.14

1.      从“手机编程与手机游戏设计”老师口中得知java爬虫技术


2.      成功实现老师利用 org.apache.http.client.HttpClient连接教务系统,并得到服务器返回的html源码的示例.

遇到的困难:

1)     将输入流转换为String

接受到服务器的数据使用的是HttpEntity中的InputStreamgetContent();

2)     线程问题

不能在主线程线程中连接网络

故使用Handler Runnable Thread 等进行线程中的通信


3.      萌生写一个抓取教务系统成绩的app,并实现了登陆界面

老师提示可以利用开源库android-async-http.jar进行网络连接。

不用写大量代码来实现在非主线程中连接网络



2014.10.15

1.      使用android-async-http.jar中的方法登陆教务系统

遇到的困难:

1)     陷入Json:

阅读android-async-http.jar的API文档时发现了可以从浏览器获取Json包。然后就陷入了JSONObject,JSONArray的研究之中。可悲的是教务系统返回的不是神马Json包。。。至今未能搞清Json到底是神马

2)     陷入验证码验证困境

不知道是访问http://210.42.121.241/

还是http://210.42.121.241/servlet/GenImg登陆教务系统

因为有个验证码传递问题,不知道怎样登陆才能使下载下来的验证码跟服务器中正确的验证码相同。结果是后者奏效。


2.      使用android-async-http.jar中的方法抓取到成绩,并将成绩网页源代码存到手机SD卡中

遇到的困难:

1)     确定进入成绩页面的URL

用Firefox看了很久的源代码和页面元素才确定URL

2)     怎样处理OnSuccess中返回的数据

一开始真没看懂居然还返回了数据

3)     OnSuccess中的异步问题

最初以为其是同步的,然后直接在里面写变量初始化的代码。。。

4)     将返回的byte[]转换成本地文件

FileInputStream的使用问题;文件编码问题

安卓写入文件权限问题



2014.10.16

1.      成功便捷获取数据

获取到返回的成绩html源代码之后又能怎样呢?该怎样获取众多<td>标签中的数据呢?难道要将源码转成字符串然后indexOf("<td>”)?那还不得搞死啊?

于是Google得知开源库Jsoup能方便地提取html中的元素。

接下来就是下载啊,看API啊,然后就看懂了,然后就getElementByTag,然后就将td中的数据转换成字符串了。


2.      创建SQLiteDatab

逗比的我想把数据存在数据库中,于是知道了SQLiteDatabase

              然后当然是看API。。。。


3.      萌生仿QQ界面的想法。

将QQ联系人列表里面的群组啊啥的改成专业必修啊啥的

其实是看中了它的好友列表的UI实现。。。。


4.      接下来当然是将数据存在数据库里面啦

遇到的困难:

1)     之前只是得到了数据的字符串格式,每个数据由若干的不可见字符分开。逗比的我以为split(“\\s”)就能分开数据,没想到是要用split(“\\s+”);不可见字符不止一个。。。

2)     回话超时,请重新登录

妈蛋,昨天居然改了密码。。。。都是因为看了李明的那篇破解验证码的文章之后发现自己的密码居然在他考虑破解的范围内。。。。。

3)     数据库的可视化管理

下了一个Sqlite browser成功解决

4)     当然还有编码问题。。。

蛋疼的问题ORZ。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值