- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Как спарсить иконку сайта?
Задача.
Есть в БД набор адресов сайтов. Надо перейти по ним и скопировать иконку на свой сервак в папочку favicons/id_site.file_ext
id_site.file_ext храним в бд как путь к файлу.
Дано:
На каждом сайте должна быть указана ( но может быть и не указана) строчка.
<link {href может находится и тут} rel="shortcut icon" {и тут} type="image/x-icon" href="http://www.tgc6.ru/fileadmin/template/images/Favicon.png">
Может href быть и без http а просто /favicon.ico и все. Тут надо будет подставить урку без заднего слеша в начало строки.
Помогите написать хоть регулярку для извлечения адреса или href.
может поможет http://webdevart.ru/articles/entry,pishem-parser-sayta
например как-то так:
запускать так php script.php domain.txt favicon_dir
содержимое domains.txt:
это демка в общих чертах, спайдер и директории переделываются под твой случай, так же, если парсить нужно не только favicon, то имхо, лучше использовать DOM, вместо регулярок
например как-то так:
запускать так php script.php domain.txt favicon_dir
содержимое domains.txt:
это демка в общих чертах, спайдер и директории переделываются под твой случай, так же, если парсить нужно не только favicon, то имхо, лучше использовать DOM, вместо регулярок
Спасибо тебе огромное.
я тоже смотрел в сторону курлов.
А если иконка в .png будет как в примере выше. А мы ее в .ico запишем
file_put_contents($argv[2] . "/$host.ico", get($favicon_url));
Это нормально будет? Проканает? Или надо и расширение выделять и сохранять?
ну как вариант:
но для определения какой-нибудь экзотики, типа тач айконов в айпадах и т.д. не помешает так же и анализировать content-type при запросе иконки по выделенному урлу (там может быть просто что-то типа <link ... href="/screen-type-favicon.php"). Здесь просто общий случай с регулярками.
ну как вариант:
но для определения какой-нибудь экзотики, типа тач айконов в айпадах и т.д. не помешает так же и анализировать content-type при запросе иконки по выделенному урлу (там может быть просто что-то типа <link ... href="/screen-type-favicon.php"). Здесь просто общий случай с регулярками.
Хмм...не сталкивался с тач айконами в нете. А вдруг за ними будущее? Анализ в каком месте кода лучше делать?
И еще нашел несколько волшебных сайтов. Фавиконовских линков не видно на них. Хотя иконка на месте. Видно в стилях как-то спрятали. (i.e mmk.ru's favicon)
Я ничего не придумал кроме как такого
try {
$page = get($url);
if (preg_match('#(<link.*icon\W.*?>)#Ui', $page, $m)) {
if (preg_match('#href=(.+)\s#Ui', $m[1], $m)) {
$raw_favicon_url = trim(str_replace(array('\'', '"'), '', $m[1])); # удаляем кавычки
if (strpos($raw_favicon_url, 'http://') === 0) {
$favicon_url = $raw_favicon_url;
} else {
$favicon_url = sprintf('http://%s/%s', $host, $raw_favicon_url);
}
}
} else {
$favicon_url = "http://www.google.com/s2/favicons?domain='.$host.'"; # для дюже спрятанных
}
# проверочка на картинность
$page = get($favicon_url);
if (preg_match("#Content-Type: ([^\"';\s]+);?#is", $page, $m)) {
if (preg_match('#image(.+)\s#Ui', $m[1], $m)) {
echo "картинка";
}else{echo "неведомы зверушки";}
}
Так али как?
Изменить условие задачи и парсить http://favicon.yandex.net/favicon/forum.searchengines.ru плохо подходит?
Изменить условие задачи и парсить http://favicon.yandex.net/favicon/forum.searchengines.ru плохо подходит?
Как не странно, не все фавиконы индексируются поиковиками. Поэтому лучше их забрать у первоисточника, а если их там нет то можно подсмотреть у яши или гоши.
Только что, для интереса проверил, яндексом проиндексированно больше иконок в рунете, чем Гуглом.
Сравнил
http://favicon.yandex.net/favicon/'.$host.'
с
http://www.google.com/s2/favicons?domain='.$host.'
А как лучше удалить первый слеш в url
htef="/favicon.gif"
так как многие не указывают его почему-то.
ну полный урл на иконку здесь строится
поскольку кУРЛу не важно есть ли два слэша в части пути урла, то что бы не нагромождать лишними проверками, явно эта ситуация не обрабатывается.
Если нужно просто получать относительный путь, то например как-то так
Спасибо.
Не могу определить расширение удаленного файла картинки по адресу
$favicon_ur l= "http://favicon.yandex.ru/favicon/".$host;
Как можно это сделать?