首页 > 解决方案 > 从链接列表下载网站图标

问题描述

我试图创建一个脚本来从链接列表中下载网站图标:

我的文件link_list.txt如下所示:

stackoverflow.com
http://google.com
www.gmail.com
facebook.com

我正在使用以下库来检查和下载网站图标:

Github:FaviconDownloader

我的脚本目前如下所示:

<?php
require_once 'vendor/autoload.php';
use Vincepare\FaviconDownloader\FaviconDownloader;

$fh = fopen(dirname(__FILE__).DIRECTORY_SEPARATOR . 'link_list.txt','r');
while ($line = fgets($fh)) {

    //if the url has not http:// add it
    if(preg_match("@^http://@i",$line))
        $line = preg_replace("@(http://)+@i",'http://',$line);
    else
        $line = 'http://'.$line;
    echo('URL: ' . $line."\n");
    $favicon = new FaviconDownloader($line);

    if (!$favicon->icoExists) {
        echo "No favicon for ".$favicon->url;
    }

    // get name of url
    $parts = parse_url($line);
    $path_parts = explode('.', isset($parts['host'])?$parts['host']:$parts['path']);

    echo 'Filename: fav-'. $path_parts[0] .'.ico' . "\n";
    $filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'fav-'. $path_parts[0] . '.ico';
    file_put_contents($filename, $favicon->icoData);
    echo "Saved to ".$filename."\n\n";
}

fclose($fh);

当我运行我的脚本时,我只能下载最后一个 favicon。在这个例子中,它只是 facebook:

在此处输入图像描述

有什么建议我的脚本有什么问题吗?

感谢您的回复!

更新

var_dump($favicon)我得到:

class Vincepare\FaviconDownloader\FaviconDownloader#2 (13) {
  public $url =>
  string(21) "http://www.gmail.com
"
  public $pageUrl =>
  NULL
  public $siteUrl =>
  NULL
  public $icoUrl =>
  NULL
  public $icoType =>
  NULL
  public $findMethod =>
  NULL
  public $error =>
  string(31) "Illegal characters found in URL"
  public $icoExists =>
  NULL
  public $icoMd5 =>
  NULL
  public $icoData =>
  NULL
  public $debugInfo =>
  array(1) {
    'document_curl_errno' =>
    int(3)
  }
  protected $httpProxy =>
  NULL
  protected $sslVerify =>
  bool(true)
}

我猜下载者不喜欢\n. 有什么建议可以解决这个问题吗?

标签: phpfavicon

解决方案


您是否尝试过打开图标,它们在那里,所以它可能会起作用。如果它不起作用,则可能是它尚未下载或已损坏。至于脚本,我不知道 PHP,所以我无法帮助你编写脚本。


推荐阅读