爬虫运行在 @binux 的 Pyspider
总想找一个站来练习一下写爬虫,于是乎,我找到了京东的Wap版。
优点
1. 没有反爬虫的设置,似乎不限制并发链接
2. 单个页面大小比较小,对VPS来说节省流量
3. 链接结构比较整齐,比较容易分析
缺点
1. 可以采集的数据比较少,只有商品分类、名称和价格
2. 单个分类分页最多2000页,但其实不仅仅有2000页
我们大概的思路就是:全部分类-->二级分类-->三级分类-->遍历全部分页-->采集数据
打开wap.jd.com后,我们不难就可以看出全部分类的地址:http://wap.jd.com/category/all.html
然后我们观察链接,二级分类的地址均是以http://wap.jd.com/category/
开头的
三级分类的地址均是以http://wap.jd.com/products/
开头的
然后,我们就可以看到商品列表页了。
在商品页中,有两类链接我们需要分析。一是商品详细页的地址,以http://wap.jd.com/product/
开头;另一个是页面的页数,我们使用Pyspider的分析工具,可以知道页面的页数是HTML>BODY>DIV.page>A[href]
里面的。
知道了上面的信息,我们基本上就可以写代码开始采集了。
京东的地址中,会传入一个区别不同用户的cid和sid的值,例如我的就是cid=1323&sid=24faaa1458222af7f13as9kf3aa12337
,实际上链接只有.html
前面的部分是有用的,.html
后面?
开始其实都是可以忽略的。
在Pyspider中,系统是通过url来区别不同的地址的,如果是sid不同的话,会被识别成不同的页面,最后的话可能会造成重复采集的结果。
因此,我打算使用urlparse
模块中的urljoin
来处理这些地址,可能方法有点不对,但是还是达到了效
请参考我的网站:https://imlonghao.com/Pyspider/wap.jd.com.html
使用Pyspider的效率我个人还是满意的,总共大概就是我2天爬了将近500W商品,速度其实可以再进一步,因为我不敢开太大并发因为已经VPS的内存不够..............
除此之外,硬盘也不够了,记录使用默认的配置,results.db总共占用了2.1G,而tasks.db占用了12G左右
此外,给@binux 反馈一个问题,像我这样500W数据的话,通过/results/dump/jd.json
无法导出数据,显示超时....
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.