Я написал парсер сайта planetestate. При вытаскивании данных из "некоторых тегов", на "некоторых страницах", вместо нужного текста отображаются знаки вопросов. ВОТ одна из таких страниц. На ней, после парсинга, вместо "грн" отображается "???", также на этой странице вместо заголовка "Продається Житловий будинок" выводится "?????????? ???????? ???????" и почему-то не вытаскиваются данные из таблиц с детальной информацией, такой как "КІМНАТ 3 | ЗАГАЛЬНА 87.4 м2 | ЖИТЛОВА 51.4 м2". Кодировка сбита не только на символах кириллицы, но и на цифрах(например на цене и кредите). Таких объявлений (с плохой кодировкой) 221, всего спарсено 8873 объявления. Пример парсинга цены объекта и валюты в которой указана цена.
function parseAd($html) {
$dom = new DOMDocument();
$dom->encoding = "UTF-8";
@$dom->loadHTML($html);
$objInfo = $dom->getElementById("objInfo");
...
$strongObjs = $objBuy->getElementsByTagName("strong");
$em = $strongObjs->item(0)->getElementsByTagName("em");
if ($em->length > 0) { // currency
$currency = str_replace(chr(0xC2).chr(0xA0), " ", trim(utf8_decode($em->item(0)->textContent)));
$ads['currency'] = $currency.'.';
$strongObjs->item(0)->removeChild($em->item(0));
}
if ($strongObjs->length > 0) { // price
$price = str_replace(chr(0xC2).chr(0xA0), "", trim(utf8_decode($strongObjs->item(0)->textContent)));
$ads['price'] = $price;
}
...
return $ads;
}
Я предполагаю, что это может быть связано с локалями языковых настроек раскладки клавиатуры у пользователя публиковавшего объявление...
Как решить эту проблему?
Попробуйте так:
$dom->loadHTML(mb_convert_encoding($html,'HTML-ENTITIES','UTF-8'));
И далее по коду не используйте преобразования кодировок.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости