/RAM-JD

关于内存条情况的讨论。(数据来自京东)

Primary LanguagePythonMIT LicenseMIT

RAM-JDpython version

京东内存条数据分析:full_moon:

人生苦短,我用Python!

前言

做这个项目主要是因为我自己想买内存条了:crying_cat_face:,我那个辣鸡电脑内存还是4G,开个PS就卡成:dog:,AE做个小点的视频渲染就得好久。。。
为了了解一下内存条的情况,于是一天晚上(2017.10.08)在图书馆闲来无事,把京东上的内存条的数据按销量顺序全部爬下来了(说全部有点虚,总感觉漏掉了一些)

爬到的数据

存到MySQL数据库的数据

ScreenShots1.PNG

从MySQL导出为CSV

ScreenShots4.PNG

爬取过程

这是京东搜索笔记本内存条并按销量排序的第一页的部分结果

ram-jd

本来是打算直接根据搜索并排序之后的URL来爬数据,结果发现京东一页数据分两次加载,开始显示前30个商品,当滚动条下拉之后然后再异步加载后30个商品,于是这个方法只能作废了。

天无绝人之路,当我在翻页的时候发现了一些有趣的东西:trollface:

下面是第二页前30个商品与某个神秘的请求(链接打开是404/request deny)

ScreenShots2.PNG

第二页后30个商品与某个神秘的请求

ScreenShots3.PNG

切换到Response之后发现这两个请求返回的HTML中就包含了商品的各项数据(名称、店铺、价格等等),简单分析这两个链接的格式就能通用了,excited!接下来就简单了,脚本细节就不多赘述了。

excited.jpg

结果分析

各店铺所占比例

可以看到这六个店(鼎信电脑办公专营店联想400配件专卖店瑞福德数码专营店千诚致远专营店悦智数码专营店纽科旗舰店)占了3/4+,尤其是第一个鼎信电脑办公专营店有725条数据,占了1/4+,简直可怕。金士顿官方旗舰店在第九,也是不错了

shop_percent.png

商品名の词云

笔记本内存条DDR3占比重大我能理解,但不是很懂联想(Lenovo)为啥占了这么大比重。然后可以看到大概现在主流的是4G和8G(其实我也打算买个8G的),16G和32G所占比重很小,在图中基本看不到:joy:

cloud.png

不同容量内存条所占比例

果然买的最多还是8G和4G

ScreenShots5.png

不同价格区间商品数

还是300-400这一区间的内存条比较火啊

ScreenShots7.png

使用说明

首先把仓库克隆到本地然后安装所有用到的库

>> git clone https://github.com/LewisTian/RAM-JD.git
>> cd RAM-JD
>> pip install -r requirements.txt

然后修改ram.py中链接mysql数据库的若干变量($user $psw $db),新建ram表用来存储数据,可参考下面建表语句

CREATE TABLE ram(
   id INT PRIMARY KEY AUTO_INCREMENT,
   name VARCHAR(255),
   price VARCHAR(45),
   shop VARCHAR(45),
   comments VARCHAR(45),
   href VARCHAR(45));

如果前面没有问题运行脚本就可以了

>> python ram.py

最后登录MySQL数据库查看数据是否保存成功

>> mysql -u $user -p
mysql> use $db;
mysql> select * from ram;

导出数据为CSV

SELECT * FROM ram INTO OUTFILE '$path/ram.csv' 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '/r/n';

注意,上面$path为MySQL的配置文件my.inisecure-file-priv的路径,否则应该会报这个错误 ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

LICENSE

MIT