傻子都会写的爬虫

在当今大数据时代,我需要对市场做出可量化可分析的数据,在目前市场上很多能过获得模板化的数据,但是一旦存在需要定制化的数据时就需要技术人员做出相应的调整

在正文之前,说先说明一下,虽然是个建议爬虫,还是需要一点编程的基础的。如果完全是零基础的话建议看看这篇关于Python的blog

http://www.runoob.com/python/python-tutorial.html

好了,首先本人是不会Python的,脚本语言只会lua,js,部分typeScript。本来想着在写爬虫之前恶补python的,但是工作讲究效率,所以下面的文章采用lua+exe来完成整个爬虫

开始之前,我也先百度搜索相关文章做铺垫(以前的翻qiang被禁之后只能百度了),发现清一色的python,少量的c#,java,js等。

这可怎么办呢?,虽然所使用的语言不一样逻辑思路肯定大同小异。那么我就开始搭建环境

首先我选用编辑器是 ZeroBrane Studio,这个编辑器最大优势在于及时性,你可以直接跑你的脚本然后边写边看效果,对应正则表达式的调试是非常方便的(正则表达式是我的噩梦)

差点忘记,我要爬的内容是什么了!

我要爬内容是最近手机型号的占有率,使用,cpu,gpu,价格等参数,具体机型的参数我首先想到的是中关村的机型库,至于占有率,使用占比等运营数据需要借助其他第三方大数据分析平台抓取,在这里我们用的是——腾讯灯塔,在内部可以拉去excel长这样

旁边的model是机型跟品牌 好了我们运营数据现在ok了,下面我要开始真正的获取model中机型的具体参数了,首先我们整理要的数据"上市日期","主屏尺寸","主屏分辨率","CPU型号", "CPU频率","GPU型号","RAM容量",这些都是我们需要数据。然后我们开始研究zol的规则:

第一次 ,我想通过这个链接来爬取数据 http://detail.zol.com.cn/cell_phone_index/subcate57_list_1.html

这个链接是有页数的每页是24个机型

后面看到源码之后发现效率有点低考虑到正则的匹配成功率问题,我们放弃了接下来我们采取第二种方式

可以通过代理到你的安卓手机进行监控,下面我们发现了一个重要的接口:

这个是jason 统计解析发现里面就是手机型号id的列表 中的page=1 就是每一页,然后我通过人肉测试发现page 最大只有250页,不过这样就可以了,让当我准备着手开始把每一页的json下载来的时候发现一个很蛋疼的问题就是——编码问题,zol不是utf8的编码格式,直接读取会乱码,然后我想到在lua下能不能有编码库,很遗憾只有iconv lua第三方而且是.c的库,没有纯lua的所以我放弃了,辗转反侧最后想到用c#来完成下载跟转码这样的过程(这里感谢超爷提醒),然后又想到怎么样让lua跟c#互动——只有把c#编译成exe才行

然后通过lua.org查询os.execute("")是可以直接执行exe的其实也就是命令行的模式可以命令行方式传递参数给exe。这样一来问题就迎刃而解了。c#层我就不多说了逻辑就是: 外部传递链接+命名——通过链接下载——写入文件(完毕)

os.execute("")有个好处就是他是顺序执行的,也就是必须exe执行完毕才能执行面的逻辑,这样很简单了当我执行下面的lua的时候c#已经把文件写好了,我只要直接读取就可以了。

下面开始分析列表中每一个链接的中详细的参数

通过上面id可以知道是每个手机id,然后通过这个链接http://lib.wap.zol.com.cn/ipj/param.php?id=

可以拿到id对应的详细参数 id=后面的就是手机的id

可以看到是个td式的表格html这样在通过正则解析即可,然后我们还是通过os.execute("")下载每个html的文件

下面就是具体解析这个html了

在这里基本就完毕了,这里具体的解析就没贴出来了。

总结:zol中机型跟灯塔中机型有很大不同比如:小辣椒=xiaolajiao 荣耀=华为等等,这些需要人工或者硬编码去修改。遇见的几个问题其实都是常见的:编码,如何截包,正则 这些不断的尝试总会解决的

大部分爬虫还是基于python是最好的了,所以如果想深入爬虫还是学习python为好,

lua+c#也是可以的,其实不同的语言都可以写爬虫,关键在于是否自我愿意去尝试(说白了还是要头铁)只要愿意去做总会成功的。

——如果有人想要源码随时留言给我即可

——keep real

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171221G0B74Y00?refer=cp_1026

相关快讯

扫码关注云+社区