文章中所有内容仅供学习交流使用,不用于其他任何目的!严禁将文中内容用于任何商业与非法用途,由此产生的一切后果与作者无关。若有侵权,请联系删除。
目标:采集三国杀官网的精美壁纸
地址:aHR0cHM6Ly93d3cuc2FuZ3Vvc2hhLmNvbS9tc2dzL21XYWxsUGFwZXI=
从开发者工具中进行分析
可以看到图片是位于一个class
值为galary_wrapper
的div
标签之中,所以我们可以先考虑数据是否是在这个html
页面中响应而非异步加载的,从响应文本中搜索一下galary_wrapper
看看是否有相应数据。
这就很润了,一共九张图片都在当前这个html页面中,那么就直接xpath解析就好了,但紧接着后边页面的图片又怎么来呢。
点击“查看更多”然后才会加载出来新的图片,毫无疑问,除了第一页之外的图片都是异步加载来的,所以我们来抓包分析一下。
可以看到点击之后抓到的包中返回了图片url,那么也就是说通过这个包我们就可以拿到第二页的图片地址了。那么第三页呢,它的url必然和第二页是有着一定的共同之处的。再点击“查看更多”然后观察第三页和第二页两个包的url。两页的url地址如下:
第二页:https://www.sanguosha.com/msgs/mWallPaper/cur/2
第三页:https://www.sanguosha.com/msgs/mWallPaper/cur/3
可以看到只有最后的数字发生了变化,前面的不管是域名还是路径都没有任何的区别。所以我们只需要修改最后的数字就可以获取到图片url了。但是要注意,第一页的图片只能通过html页面获取,不能通过这个接口获取。所以我们请求的时候需要判断请求的是第一页或其他。伪代码如下:
if 页码 == 1:
请求https://www.sanguosha.com/msgs/mWallPaper并解析
else:
请求https://www.sanguosha.com/msgs/mWallPaper/cur/%d
解析图片地址
最后,将所有放到列表中的图片url遍历出来进行请求并将图片保存到本地即可。
完整代码请移步:https://gitee.com/shuailiuquan/spider-code/tree/master/