Парсинг html в json

479
26 января 2017, 04:22

Я спарсил информацию с сайта и у меня есть около 1000 div на подобии

<div 
    style='background-color:#2E2E2E;' 
    botNum='1' 
    id='5' 
    inspectLink='' 
    valueType='Key' 
    amount='52' 
    original-name='Chroma 2 Case Key' 
    title='<div style=\"margin:-8px -8px; padding:3px 10px; padding-bottom:5px; color:#57a857;font-size:16px;background:rgba(26,26,26, 1);\">Chroma 2 Case Key<\/div>' 
    classId='927007517' 
    value='2.85' 
    class="itemImgDiv" 
    clickable='true'>
        <div class='propsWrapper'>
            <span class='number'>
                <b id='num5'>x52</b>
            </span>
            <span class='exterior'></span>
        </div>
        <img src='https:\/\/steamcommunity-a.akamaihd.net\/economy\/image\/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXX7gNTPcUxuxpJSXPbQv2S1MDeXkh6LBBOie3rKFRh16PKd2pDvozixtSOwaP2ar7SlzIA6sEo2rHCpdyhjAGxr0A6MHezetG0RZXdTA\/91fx68f' onerror=\"this.src='https:\/\/steamcommunity-a.akamaihd.net\/economy\/image\/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXX7gNTPcUxuxpJSXPbQv2S1MDeXkh6LBBOie3rKFRh16PKd2pDvozixtSOwaP2ar7SlzIA6sEo2rHCpdyhjAGxr0A6MHezetG0RZXdTA\/92fx68f';\" class='itemImg'></img>
        <img src='\/images\/st.png?1' class=\"stImg\" style=\"visibility:none;\"></img>
        <center style='pointer-events:none;'>
            <b id='value5' class='value' style="color: #57a857">        
            <span>$2.85</u></b>
        </center>
</div>

Из div должен получиться json вида:

[{"botNum": "1","amount": "52", "name": "Chroma 2 Case Key", "value" : "2.85"}]

Как я могу передать это в json?

Answer 1

Можно придумать несколько вариантов решения этой задачи. Наиболее простым будет использование регулярных выражений. Другие варианты могут включать приведение исходного html-кода к виду валидного XML и работа с ним, либо какой-то ручной парсинг.

С использованием регулярных выражений искомый результат может быть получен следующим образом (html-код в файле data.txt):

$txt = file_get_contents("data.txt");
$fields = [
     'botNum' => "/botNum='([\d]+)'/",
     'amount' => "/amount='([\d]+)'/",
     'name'   => "/name='(.+)'/",
     'value'  => "/value='(.+)'/",
  ];

$result = [];
foreach($fields as $k => $rExp){
    if(preg_match($rExp, $txt, $matches)){
        $result[$k] = $matches[1];
    }
}
print json_encode([$result]);

На выходе получаем:

[{"botNum":"1","amount":"52","name":"Chroma 2 Case Key","value":"2.85"}]
READ ALSO
Куда вставить код соц. кнопок от Яндекс?

Куда вставить код соц. кнопок от Яндекс?

Добрый день! Я далек от написания кодов, могу только вставить готовый код в нужное место, если мне скажут где это местоКак со счетчиком Яндекса...

414
Каким образом передать новый запрос?

Каким образом передать новый запрос?

ЗдравствуйтеТакая задача

346
Запись cookie посетителя при нажатии клавиши

Запись cookie посетителя при нажатии клавиши

Прошу помощи в доработки скрипта

412
Есть ли тарифы на запросы в google map Javacript api

Есть ли тарифы на запросы в google map Javacript api

У меня есть приложениеВ нем отображается 70 маркеров

402