人生苦短,我用Python!
做这个项目主要是因为我自己想买内存条了:crying_cat_face:,我那个辣鸡电脑内存还是4G,开个PS就卡成:dog:,AE做个小点的视频渲染就得好久。。。
为了了解一下内存条的情况,于是一天晚上(2017.10.08)在图书馆闲来无事,把京东上的内存条的数据按销量顺序全部爬下来了(说全部有点虚,总感觉漏掉了一些)
这是京东搜索笔记本内存条
并按销量排序的第一页的部分结果
本来是打算直接根据搜索并排序之后的URL来爬数据,结果发现京东一页数据分两次加载,开始显示前30个商品,当滚动条下拉之后然后再异步加载后30个商品,于是这个方法只能作废了。
天无绝人之路,当我在翻页的时候发现了一些有趣的东西:trollface:
下面是第二页前30个商品与某个神秘的请求(链接打开是404/request deny)
第二页后30个商品与某个神秘的请求
切换到Response
之后发现这两个请求返回的HTML
中就包含了商品的各项数据(名称、店铺、价格等等),简单分析这两个链接的格式就能通用了,excited!接下来就简单了,脚本细节就不多赘述了。
可以看到这六个店(鼎信电脑办公专营店
、联想400配件专卖店
、瑞福德数码专营店
、千诚致远专营店
、悦智数码专营店
、纽科旗舰店
)占了3/4+,尤其是第一个鼎信电脑办公专营店
有725条数据,占了1/4+,简直可怕。金士顿官方旗舰店
在第九,也是不错了
- 生成词云代码可参考项目WordCloud
笔记本
、内存条
、DDR3
占比重大我能理解,但不是很懂联想
(Lenovo
)为啥占了这么大比重。然后可以看到大概现在主流的是4G和8G(其实我也打算买个8G的),16G和32G所占比重很小,在图中基本看不到:joy:
果然买的最多还是8G和4G
还是300-400这一区间的内存条比较火啊
首先把仓库克隆到本地然后安装所有用到的库
>> 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.ini
中secure-file-priv
的路径,否则应该会报这个错误
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement