#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. Спасибо, хотя