laravel-Goutte爬虫库
安装Goutte
1)在您的composer.json文件中添加为需求依赖项:
$ composer require fabpot/goutte
Goutte的基本使用
1)在使用Goutte前记得加引用。
use Goutte\Client;
并在构造方法里创建一个Goutte客户端实例。(以laravel的commands为例)
$this->client = new Client();
2) 接下来我们要让爬虫上网,通过request方法提出请求。(crawler:爬虫)
$crawler = $this->client->request(' GET ' , ' https://要爬的网页地址 ');
client的request方法会得到这个网页的内容,封装成一个爬虫对象。我们可以让这个爬虫对象友好的显示成HTML格式。
$crawler->html();
3)然后没什么好说的了,爬虫爬取到整个网页的内容了,接下来就是采集有用的数据,或者通过这个网页上的链接继续爬取。
常用的有点击某个链接,得到该链接里面的内容:
$link = $this->client ->selectLink ( ' 链接的名称' ) ->link();
$crawler = $this->client->click($link);
采集数据:
$crawler ->filter( 'HTML标签 、class样式名、id 等 ' ) ->text();
如果要采集的数据是相同样式一坨数据(例如:七八样式相同的a链接)。
$arr = $crawler->filter('HTML标签 、class样式名、id 等 ')->each(function ($node){ //通过匿名函数遍历一下这一坨相同样式的数据 $item = $node->attr('href'); //这里的$node是一坨里面的一个数据 return $item; //如果不返回,默认返回null }); 最后我们得到的是个数组,里面存放的就是一个一个item对象.
爬取图片、json文件:
和文本数据类似,只要知道图片或者json文件的url,用file_get_contents获取图片和json文件。
可利用json_decode函数来解码json文件。json_encode函数来封装数据成json格式。
掌握以上最常用的爬取方法就能完成普通网页的爬取了。如果觉得还不过瘾,可以去https://symfony.com/doc/current/components/dom_crawler.html学习更多知识。之后会有爬虫实例博客更新。
这个人暂时没有 freestyle