2014-01-21 5 views
0

Я работаю с содержанием разбором Я выполнил программу-примера для этого я взял ссылку образца пожалуйста, посетите ссылку нижеDynamic Content Синтаксического

http://www.equitymaster.com/stockquotes/sector.asp?sector=0%2CSOFTL&utm_source=top-menu&utm_medium=website&utm_campaign=performance&utm_content=key-sector

или

Click Here

в приведенной выше ссылке я проанализировал данные таблицы и сохранил в java-объект.

BSE и NSE не являются моими точными требованиями, только я беру пример образца. вышеуказанная ссылка разработана в таблицах, в которых они не используются id и классы. В моем примере я синтаксический анализ данных с использованием XPath

это мой Xpath

/html/body/table[4]/tbody/tr/td/table[2]/tbody/tr[2]/td[2]/font/table[2] 

Я выбрал и разбора он работает нормально. вот проблема в будущем, если они изменили структуру сайта моя программа не сработает наверняка. скажите мне другой способ анализировать данные динамически и хранить их в базе данных. отображать результаты на основе условия, даже если они изменили структуру веб-страницы Я использовал для этого JSOUP api для этого. Скажите мне, что любой другой ApI, который обеспечивает наилучшую поддержку для этого типа требований

ответ

1

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

Вы можете попробовать полагаться на цвет: //table[@bgcolor="#c9d0e0"], поле «GET MORE INFO»: //table[tr/td//text()="GET MORE INFO"], то «Дополнительная информация» есть в каждой строке: //table[.//td//text()="&nbspMore Info&nbsp"] ...

Идея заключается в том, чтобы найти что-то уникальное в идеале (если вы не можете найти какие-либо уникальные критерии, table[color condition selecting a few tables][2] все еще сильнее идет по всему дереву), каждый раз присутствующий, и используйте это как id.

+0

Выбор цвета с помощью рабочего стола [bgcolor = # c9d0e0]. Для улучшения я попробовал следующие элементы elem = doc.select ("table: contains (SCRIPT)"); он также отображает родительскую таблицу. Как выбрать конкретную таблицу – sarath

+0

Действительно не уверен, что вы имеете в виду ... Что это за «SCRIPT»? Если это выбирает родительский узел, вы можете сделать «node // table», чтобы увидеть все вложенные таблицы, но я считаю, что вы уже знаете, что – Robin

+0

заголовок таблицы сценариев – sarath