项目起源是不想一条条去百度手机信息,所以写了这个爬虫。目前还有不小的缺陷
- 不能获取别名
- 不能获取的手机太多,约 23% 拿不到信息
- 没有进行错误处理 ,崩溃时无法处理
- 数据源单一
- 输出格式单一
持续改进中
- git
- node.js
- npm
git 克隆项目
git clone https://github.com/luchun/phone_info_reptile.git
进入项目目录安装依赖
npm install
执行
npm start
通过npm 执行
npm start
需要获取的手机型号列表是我从excel中复制列到txt中的,为 stdin 目录下的list.txt 和 400.txt ,默认只获取前400个手机型号的信息。
如果想取得列表中所有手机的型号信息,需要带参数 --all
npm start --all
输出的结果在 stdout 目录下的 info.txt 目前的输出结果并不好,还在改进中
- 修改将 zol 作为第一数据源, 在没有获得准确信息后,转到 手机信息网 查询
- 修改输出格式,输出SQL语句
- 一些手机名是市场名,而非在工信部登记的设备名,导致查不到如 iphone 6 的设备名是 A1586
- 有一些手机在 手机信息网 上登记有误 如 vivo X5M , Lenovo K30-T。
- 有一些手机,匹配错误,如 A11, X9000。可能会匹配到较老的型号,数据值偏小。
因为查询数据需要大量的http请求,并且在获取到页面数据后进行查找,所以我没有做成异步,而是同步查询,所以效率并不高。
前400条 30分钟 93条未取到 前1000条 1小时30分钟 220条未取到
当前使用的数据源是 “工业和信息化部电信设备认证中心”下的 手机信息网 使用这个网站的原因是它的技术比较老,返回的结果很简单,匹配度比较高。而其他的网站如中关村在线等,模糊度比较大,搜索返回的结果很多,我的程序无法判断哪个是正确的链接。
缺点是只能匹配准确型号,如查询 iphone 6 是得不到结果的,只有查询准确的型号 A1586 才有结果。 同时查询不到上市型号别名
后续可能会改为 中关村在线 作为数据源
后续可能会改为 gsmchoice 作为源来获取别名