「这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战」
课程背景
- 我作为一个PHP工程师 虽然这几年PHP没落了
- 但我还是有责任补充一些PHP方面的高级教程
- 掘金粑粑开始更文奖励了 不能白白拿人家的奖励
应该发表一些高层次的PHP的技术文章别让PHP倒了
课程表
数据爬取主要分几个步骤
- 确定目标网站
- 爬取网页中的内容
- 匹配出需要的图片url
- 下载到本地
- 进行下一波循环 我们大体先按照这个流程展开我们的讲解
确定目标网站
目标网站https://toutiao.sanhao.com/ 看着列表图片不错,就扒取这些图片
发送请求
我们使用php一个非常底层的发送请求的包Guzzle
composer require guzzlehttp/guzzle:~6.0
这样就完成插件安装了。
新建index.php文件 引入vender扩展包
<?php
/**
* [多线程图片爬取脚本]
* Author Liiy.
* Date 2022/02/01.
* Time 17:21.
*/
require 'vendor/autoload.php';
分析url
分析url发现就连接的最后一个数字变化
toutiao.sanhao.com/news-list.p…
于是我们先生成我们需要爬取的链接
$base_url = "https://toutiao.sanhao.com/news-list.php?u=p%s";
//生成目标链接
for ($i=1; $i < 2822; $i++) {
echo sprintf($base_url,$i) . "\n";
}
这样我们就生成了需要爬取的连接
发送请求连接
$client = new \GuzzleHttp\Client([ 'verify' => false]);
$response = $client->request('get', $url);
$body = (string)$response->getBody();
file_put_contents('a.txt',$body);
此时我们检查a.txt文件的内容发现,就是我们想要的包含图片url的网页内容。
如何从这些内容中提取图片url呢?我们下一章继续讲解。