在完善图书查询原型,增加收藏夹功能中写了个图书查询方面的原型。是为了应付图书企业应用。其实,移动设备,主要应该是最终消费者。
比如这样的场景,其实我就很需要,在书店看书,通过扫描ISBN号,查看对该书的书评,然后觉得确实不错,还想看看各大网上书店的价格。
对于书评,还是比较简单的,豆瓣提供了公开的API。但是比价没有。不过豆瓣提供了网页。比如:
http://book.douban.com/subject/4803982/buylinks
这是《团队之美》这本书的比价页面。
可以看到主要网上书店都包括了。思路是只要我们能够解析该链接的页面,把价格等信息抽取出来。
在这里我尝试了三种办法:
通过android自带的xmlpull解析所需节点的信息,但是不行,因为该页面不是标准的xhtml页面,虽然该页面中声明了xhtml页面的schema,有标签没有结束标志,造成解析异常; 使用正则表达式,定位所需标签中的内容,但是也不成功,因为前后查找中的前查找比较难写,中间字符变化而且很多,等有时间再琢磨,这种方法的好处是无需附加类库支持; 使用htmlparser,也就是下文中使用的方法,缺点是要增加类库,不过使用起来还是挺省心的。
代码见:
http://easymorse.googlecode.com/svn/tags/compare.price-0.1/
运行的样子:
实际使用wifi应该耗时会减少一些,因为这里使用3G拨号需要一点儿时间。
使用htmlparser,官方网址:
http://htmlparser.sourceforge.net/
使用的它的filter方式,即,通过filter,过滤出想要的html节点列表。
我过滤出10个A节点,然后,我知道前两个节点是无用的。后面8个A节点,成对出现,是各个网上书店的名称和实际售价。