20
Фев
2017

Проблема с кодировкой при парсинге

Я написал парсер сайта 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;
}

Как решить эту проблему?

Источник: https://ru.stackoverflow.com/questions/630254/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0-%D1%81-%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%BE%D0%B9-%D0%BF%D1%80%D0%B8-%D0%BF%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3%D0%B5

Share

Тебе может это понравится...