一文简述用php实现爬虫
本文将用最简单的方法实现爬虫,用php语言实现。在本文里,不会使用专业术语,甚至可能会出现很多不正确的专业术语,还请各位海涵。
步骤
使用步骤
1.找到数据URL
英雄资料的相关信息都会以数组或关联数组的结构储存起来。此时我们按住浏览器F12,点击网络或者NetWork,在左侧的各个文件寻找数组的位置,并且右键复制link address。我们就已经找到了URL。
2.找到图片URL
将鼠标放在任何一个.jpg上,都会出现该图片所在的地址。观察可发现规律,所有英雄的图片所在地址都是https://game.gtimg.cn/images/lol/act/img/champion/英文名.png 这样命名的。所以我们需要找到每个英雄对应的英文名,即可获得图片的URL。
在之前的数组中,里面有一个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.运行
图片结果如下: