Старайтесь не использовать "полные" xpaths.
//div[@id='leftcontainer']//div[9]//table//tr[4]/td[2]
лучше
/html/body/.../.../.../.../.../...
Большинство HTML-страниц недействительны или даже не имеют правильной формы. Таким образом, структура DOM может измениться при обработке «реальными HTML-парсерами». Например, <tbody>
может быть вставлено в <table>
, если его нет. Хуже, когда разные HTML-парсеры генерируют разные DOM-деревья, поэтому один XPath может быть действительным для одного парсера, но не для другого. Я бы предпочел использовать «подстановочные знаки», такие как table//tr[4]
вместо table/tbody/tr[4]
или table/tr[4]
, чтобы я мог забыть о <tbody>
. Такие выражения более надежны, когда используются против грязных реальных HTML-страниц.
Вы можете использовать Firepath, плагин для Firebug, который затем является плагином для Firefox, для отладки выражений XPath.
p.s. Вы можете попробовать мой проект JHQL (http://github.com/wks/jhql)) именно для этой задачи. Вам понравится, если у вас будет больше страниц для извлечения данных.