Неизвестный формат HTML, вложенный в ответ JSON

#html #xml #templates #xpath

#HTML #xml #шаблоны #xpath

Вопрос:

Я пытаюсь очистить веб-сайт, HTML-код которого вложен в ответ JSON. Я не могу использовать XPath для вложенного HTML, потому что он в странном шаблонном формате, есть ли какой-нибудь способ преобразовать это в обычный XML?

Первая часть вложенного xml выглядит следующим образом:

 {"template":"
<html>n 
    <head></head>n 
        <body>n  
            <h3 class="hide">Goods list</h3> n  
                <!-- type_list --> n  
                <div class="total_listing_wrap"> n   
                    <ul class="tt_listbox sell_sec"> n    
                        <li id="thisClick_1730512587" data-ctgrrank="0" data-seq="1"> n     
                            <div class="total_listitem"> n      
                                <div class="photo_wrap" name="prdPhoto"> n  
  

Ответ №1:

Просто используйте анализатор JSON для извлечения HTML в виде текста, а затем анализатор HTML для преобразования HTML в дерево узлов.

С XPath 3.1 вы можете сделать все это за один шаг, например:

 let $doc := parse-xml(json-doc('input.json')?template)
return $doc//div[@class='total_listitem']
  

(Это предполагает, что HTML является правильно сформированным XML …)

Комментарии:

1. Спасибо за ваш ответ, это с Python? Вы использовали библиотеку, отличную от XPath?

2. XPath 3.1 доступен пользователям Python через продукт Saxon / C. (Но, конечно, это важная часть технологии, которую нужно использовать, поэтому все зависит от того, насколько велик этот проект.)

3. Спасибо, я принял ваш ответ. На самом деле я использую платформу анализа данных под названием KNIME, которая имеет встроенный узел XPath, который использует XPath 2.0. Спасибо, хотя