一文简述用php实现爬虫(下载英雄联盟所有英雄图片)

一文简述用php实现爬虫

本文将用最简单的方法实现爬虫,用php语言实现。在本文里,不会使用专业术语,甚至可能会出现很多不正确的专业术语,还请各位海涵。


步骤

使用步骤

1.找到数据URL

一文简述用php实现爬虫(下载英雄联盟所有英雄图片)

英雄资料的相关信息都会以数组或关联数组的结构储存起来。此时我们按住浏览器F12,点击网络或者NetWork,在左侧的各个文件寻找数组的位置,并且右键复制link address。我们就已经找到了URL。

2.找到图片URL

一文简述用php实现爬虫(下载英雄联盟所有英雄图片)

将鼠标放在任何一个.jpg上,都会出现该图片所在的地址。观察可发现规律,所有英雄的图片所在地址都是https://game.gtimg.cn/images/lol/act/img/champion/英文名.png 这样命名的。所以我们需要找到每个英雄对应的英文名,即可获得图片的URL。

一文简述用php实现爬虫(下载英雄联盟所有英雄图片)
在之前的数组中,里面有一个alias的变量是用来记录每个英雄的英文名的。那么我们可以通过这个获得英雄的英文名从而得到图片的URL。

3.代码详解

<?php

$URL = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js';

$jsonarr = json_decode(file_get_contents('https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'),true);
//file_get_contents获取此页面上的信息,json_decode用于解码成数组
//那么我们就可以获得所有英雄资料的数组了,名字叫$jsonarr

for($i = 0 ; $i<count($jsonarr['hero']); $i++){     //遍历$jsonarr里面的变量[hero]
$herolist = $jsonarr['hero'];                       //获得英雄列表
$hero = $herolist[$i];                              //将英雄列表的每一个取出来,就是每个英雄
$EngName = $hero['alias'];                             //获得每个英雄的英文名
$Cname = $hero['name'];                             //获得每个英雄的中文名
// echo($EngName)."\t";
$heroimgURL = "https://game.gtimg.cn/images/lol/act/img/champion/{$EngName}.png";   //拼接URL
//图片的URL,就可以将英文名拼接上去,获得每个英雄图片的URL

$heroimg = file_get_contents($heroimgURL);   //先获得每个图片的URL

mkdir('lolheroimage',0777,true);           // 创建目录
$path = 'lolheroimage/';                //设置路径,也就是刚刚创建的这个
file_put_contents("{$path}{$Cname}.jpg",$heroimg);      //将图片保存起来
//参数意思分别为("{路径}{图片名}.jpg",图片URL)
}

?>


4.运行

图片结果如下:
一文简述用php实现爬虫(下载英雄联盟所有英雄图片)

上一篇:夺命雷公狗ThinkPHP项目之----企业网站21之网站前台二级分类显示名称(TP自定义函数展示无限极分类)


下一篇:状态模式