Анализ экранных данных: регулярные выражения или выражения XQuery?

Вы перепутали свой вар с классом.

Вы должны написать

Object obj = parser.parse(reader);

parser - это ваша переменная, которая содержит Instance of JsonParser с методом parse()

вместо [1112 ]

Object obj = JsonParser.parse(reader);

JsonParser - это Class JsonParser, который не имеет статического метода parse()

6
задан Chad Birch 3 April 2009 в 22:03
поделиться

7 ответов

Я использовал бы регулярное выражение по причинам, которые менеджер привел, pluss некоторые (более портативный, легче для внешних программистов следовать, и т.д.).

Ваш встречный аргумент упускает суть, что его решение было хрупко относительно локальных изменений, в то время как Ваш хрупко относительно глобальных изменений. Что-либо, что повреждает его, вероятно, повредит Ваш, но не визу-versa.

Наконец, намного легче создать помои / гибкий провод в его решение (если, например, необходимо иметь дело с несколькими незначительными вариациями во входе).

3
ответ дан 8 December 2019 в 17:27
поделиться

Я использовал бы регулярное выражение, но только потому, что большинство страниц HTML не является допустимым XML, таким образом, Вы никогда не заставляли бы XQUERY работать.

Я не знаю XQuery, но это похоже на выражение XPath мне. Если так, это выглядит немного дорогим с так многими "//" операторы в нем.

4
ответ дан 8 December 2019 в 17:27
поделиться

Попробуйте JTidy или BeautifulSoup, у меня работает нормально. конечно // Эксперимент XPATH довольно затратен на утилизацию.

2
ответ дан 8 December 2019 в 17:27
поделиться

Я на самом деле нахожу поисковые выражения CSS легче читать, чем также. Там, вероятно, существует по крайней мере одна библиотека на языке по Вашему выбору, который проанализирует страницу и позволит Вам писать директивы CSS для определения местоположения конкретных элементов. Если существует соответствующий класс, или идентификатор сцепляются поблизости затем, выражение довольно тривиально. Иначе захватите элементы, которые кажутся соответствующими и выполняют итерации через них для нахождения тех, что Вам нужно.

Что касается хрупкого, ну, в общем, они все хрупки. Анализ экранных данных по определению зависит от автора той страницы, не изменяющей ее расположение решительно. Пойдите с решением, это читаемо и может быть легко изменено позже.

1
ответ дан 8 December 2019 в 17:27
поделиться

Я использую BeautifulSoup для фрагментирования.

1
ответ дан 8 December 2019 в 17:27
поделиться

Нехрупкое решение для анализа экранных данных? Удача интервьюеру для этого: просто, потому что регулярные выражения отказываются от большого количества контекста, не означает, что они являются немного менее хрупкими: просто то, что они являются хрупкими другими способами. Хрупкость даже не может быть недостатком: если что-то изменяется в исходной веб-странице, Вы часто более обеспечены, если Ваше решение поднимает тревогу, а не пытается компенсировать в умном (и непредсказуемый) путь. Поскольку Вы отметили. Эти вещи всегда зависят от Ваших предположений: в этом случае, на том, что составляет вероятное изменение.

Я довольно люблю пакет гибкости HTML: Вы получаете допуск non-XHTML-compliant веб-страниц, объединенных с выразительным питанием XPath.

1
ответ дан 8 December 2019 в 17:27
поделиться

Регулярные выражения действительно быстро и работают с Non XML-документами. Это действительно хорошие моменты против XQuery. Однако я думаю, что используя какой-нибудь конвертер к XHTML, как приборки, и, возможно, несколько проще, XQuery, как только последняя часть от ваших:

//b[contains(child::text(), "Product Dimensions:")]/following-sibling::text()

- очень хорошая альтернатива.

С уважением

Рафал Русин

1
ответ дан 8 December 2019 в 17:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: