作者:零一
文章插图
做数据分析,没有数据,是分析师的硬伤 。但不完全是硬伤,没有数据其实也可以利用逻辑思维能力来分析推断 , 这个以后有机会跟大家分享 。今天 , 我要讲怎么用代码获取数据 。
没办法很详细地讲,只能大致上讲解一下,然后给个实例 。
工具:Excel2013(用哪个版本都是可以的)
语言:Visual Basic for Applications(简称VBA,集成在Office套件里面的开发程式,有些精简版或者用户在安装的时候取消了VBA套件 , 就会无法启动)
我原本学的是硬件开发,只会汇编,写这类程序不是我擅长的 , 而且是自学的只有半桶水的状态 。我写的程序都有很大的优化空间,如果有更高效的方法 , 请不吝指教 。
实例一:获取淘宝搜索结果页宝贝信息
如下图,搜索了关键词“T恤”后 , 会看到类似这样的结果,我想把宝贝标题和价格,排名位置等信息给抓取到本地数据库或者表格里面 。
文章插图
我们右击一下页面,点查看源文件
文章插图
看到的结果如下
文章插图
这个是网页源码 , 我要介绍的方法,就是通过网页请求,获取这里的源码,然后再对源码进行解析 。
观察源码这个步骤很重要,在这里会决定数据要怎么拿 。
比如要取出标题
文章插图
标题是在 title= 后面的一串字符 , 又以 > 符号结束 。把这两个看成是分隔符的话,那么标题就藏在两个分隔符的中间 。
那么,思路上,只要知道这两个分割符的位置,那么,就可以取出标题了 。
下面,让我们开始实践
首先 , 我们准备好工具,在excel的文件--选项--自定义功能区--主选项卡,把开发工具打钩 。
【详细的爬取淘宝数据教程 淘宝怎么用代码搜宝贝】
文章插图
文章插图
然后进入vba编程环境
文章插图
插入模块
文章插图
可以在这些模块里面写程式,下图我一口气插入了4个模块,我在其中一个模块上面写入代码即可 。
文章插图
然后写入代码(这里是截图,在文章最后,会附上文本版的代码)
文章插图
文章插图
大家注意到,在第四行 , 有个很长很长的一串
URL = "http://s.taobao.com/search?q=T%D0%F4&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=1.6659421.754896237.1&initiative_id=tbindexz_20140301"
大家只要把这个链接替换掉就可以了 。这个链接,是搜索后的结果页 。在淘宝敲入关键词,然后选择好属性或者排序方式后,把网址贴过来 , 然后运行这段代码就可以了 。下图是运行按键的位置
文章插图
运行后得到的结果
文章插图
这段代码的解释,我都注释在代码里头了 。其实可以把这个过程写成更加智能 。网址的q=后面的T%D0%F4是T恤的uncode码,其实只要写多一个转码程序,可以直接在excel的工作表或者窗体里面输入关键词进行搜索 。
另外,利用参数sort来指定排名类型,如
sort=default是综合排名
sort=renqi-desc是人气排名
sort=sale-desc是销量排名
s=40是页码,公式是40*(页码-1),非常明显,s=40就是第2页
直接利用代码组合网址,如http://s.taobao.com/search?q=T%D0%F4&sort=renqi-desc&s=40(复制粘贴到淘宝看看结果)
这是T恤下的人气排名第二页的搜索结果
再做个查询按键,就变成软件了 。
如果用时间来控制,可以让程序每隔几分钟或者几小时运行一次,达到自动爬抓数据的目的 。
这部分我就不详说了,感兴趣的自己研究 。
=================================================
实例二:用API拿数据的方法
首先 , 要到api.taobao.com注册开发者身份 , 拿到app key 和 app secret
文章插图
然后,根据开发文档的API列表:open.taobao.com/api/api_list.htm , 查找相应功能的api 。那么下面我用taobao.itemcats.get , 来做例子
首先,要阅读这个API的说明文档,知道这个接口的调用参数,
文章插图
然后可以到沙箱里面测试http://api.taobao.com/apitools/apiTools.htm?catId=3&apiName=taobao.itemcats.get,可以观察返回的结果,我们要的数据一样在两个分隔符的中间,只要提取出来即可 。
文章插图
最后写代码即可,这段代码,只要把app_key和secret替换成自己的,就可以运行了 。
文章插图
运行结果是把女装(parent_cid是16)的子类目代码和对应的子类目名称获取下来
文章插图
其他电商平台,如一号店等,原理都是一样的 。