项目描述:本项目通过requests和re正则表达式爬取英雄联盟所有英雄的皮肤海报
爬虫
思路
打开英雄联盟官网(http://lol.qq.com/)可以看到里面的内容是动态加载的,请求访问返回的源码中没有英雄的页面的链接但有个用来生成这个英雄列表的JavaScript的函数,所以不能通过常规爬虫的方法来获取所有海报图片的链接。但通过观察可以发现所有英雄海报地址是: "http://ossweb-img.qq.com/images/lol/web201310/skin/big+皮肤号码.jpg"的格式,不难发现皮肤号码其实就是英雄id+3位数字组成的,3位数字表示第几个皮肤海报,所以我们只要获取所有英雄的id就可得到所有英雄的海报链接。
获取英雄名字及id
打开英雄联盟官网,根据查看官网源码分析得到访问这个链接"http://lol.qq.com/biz/hero/champion.js"发现这个champion.js里刚好有着我们想要的所有的英雄名字以及id。
下图为网页内容
构成海报链接
通过观察分析可以发现所有英雄海报地址是:"http://ossweb-img.qq.com/images/lol/web201310/skin/big+皮肤号码.jpg"的格式,因此我们根据上面获得的英雄id即可拼接成海报下载链接,并将其存在数组中
下载英雄皮肤海报
逐张下载每张海报,图片以英雄的名字命名
代码
爬取结果
本次爬取的lol官网是动态加载的,因此在解析网页时会比较麻烦,我们通过分析其英雄皮肤海报的链接特点发现其中的规律,从而大大减少我们项目的工作量