📜  如何使用 Goutte php 获取 favicon(1)

📅  最后修改于: 2023-12-03 14:51:52.781000             🧑  作者: Mango

如何使用 Goutte php 获取 favicon

当我们需要获取网站的 favicon 信息时,使用 Goutte php 是一个简便的方法。Goutte php 是一个用于爬取网页信息的 PHP 库,具有可读性强、弹性大、使用方便的特点。

步骤一:安装 Goutte php 库
composer require fabpot/goutte
步骤二:获取 favicon 的 URL

调用 Goutte php 库中的 request() 方法可以获取 HTML 页面信息,从而获取 favicon 的 URL。代码如下:

use Goutte\Client;

$client = new Client();
$crawler = $client->request('GET', 'https://www.example.com');
$favicon = $crawler->filterXPath('//link[contains(@rel, "icon")]/@href')->extract(['href'])[0];

这段代码使用 filterXPath() 方法选择 HTML 中带有 "rel=icon" 属性的 <link> 标签,进而提取其 href 属性。

上述代码输出的 $favicon 变量保存了 favicon 的 URL。

步骤三:下载 favicon

有了 favicon 的 URL,我们可以使用 PHP 的 curl 执行文件下载操作。代码如下:

$ch = curl_init($favicon);
$fp = fopen('favicon.ico', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
curl_close($ch);
fclose($fp);

以上代码使用 curl 将 favicon 下载到本地。下载后的文件保存在程序运行的当前路径下。

总结

使用 Goutte php 和 curl,可以轻松获取网站的 favicon 。下面是完整的代码片段:

use Goutte\Client;

$client = new Client();
$crawler = $client->request('GET', 'https://www.example.com');
$favicon = $crawler->filterXPath('//link[contains(@rel, "icon")]/@href')->extract(['href'])[0];

$ch = curl_init($favicon);
$fp = fopen('favicon.ico', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
curl_close($ch);
fclose($fp);

在实际使用时,你需要根据自己的需求进行修改。