写一个php爬虫爬王者荣耀英雄皮肤图片,步骤注释要详细
时间: 2023-06-19 16:09:33 浏览: 172
王者荣耀皮肤图片爬虫_爬虫_python_王者荣耀_
5星 · 资源好评率100%
好的,以下是详细的步骤注释:
```php
<?php
// 设置请求头,模拟浏览器进行访问
$header = array(
"Referer: https://pvp.qq.com/web201605/herolist.shtml",
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
);
// 构造请求地址
$url = "https://pvp.qq.com/web201605/js/herolist.json";
// 发送请求,获取英雄列表
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$result = curl_exec($ch);
curl_close($ch);
// 解析英雄列表数据
$heroList = json_decode($result, true);
// 遍历英雄列表,爬取每个英雄的皮肤图片
foreach ($heroList as $hero) {
$heroName = $hero["cname"]; // 英雄名称
$heroId = $hero["ename"]; // 英雄ID
// 构造英雄皮肤列表页面地址
$skinUrl = "https://pvp.qq.com/web201605/herodetail/{$heroId}.shtml";
// 发送请求,获取英雄皮肤列表页面内容
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $skinUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$skinHtml = curl_exec($ch);
curl_close($ch);
// 解析英雄皮肤列表页面内容,获取皮肤图片地址
preg_match_all("/<div class=\"pic-pf\"><img src=\"(.*)\"/isU", $skinHtml, $skinMatches);
// 遍历皮肤图片地址列表,下载皮肤图片到本地
foreach ($skinMatches[1] as $skin) {
$skinName = basename($skin); // 皮肤名称
$skinUrl = "https:".$skin; // 皮肤图片地址
// 发送请求,下载皮肤图片到本地
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $skinUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$skinData = curl_exec($ch);
curl_close($ch);
// 保存皮肤图片到本地
file_put_contents("./{$heroName}/{$skinName}", $skinData);
}
}
?>
```
以上代码会爬取王者荣耀官网上的英雄皮肤图片,并保存到本地。需要注意的是,由于官网可能会有反爬机制,所以需要设置请求头来模拟浏览器进行访问。另外,为了方便管理,本代码会将每个英雄的皮肤图片保存在以英雄名称为名的文件夹中。
阅读全文