Я пытаюсь извлечь финансовую информацию из таблицы с помощью JSoup. Я рассмотрел подобные вопросы и могу получить свои примеры для работы (здесь два:Извлечение данных таблицы с использованием JSoup
Using JSoup To Extract HTML Table Contents).
Я не уверен, почему код не работает на my URL.
Ниже приведены 3 разных попытки. Любая помощь будет оценена по достоинству.
String s = "http://financials.morningstar.com/valuation/price-ratio.html?t=AXP®ion=usa&culture=en-US";
//Attempt 1
try {
Document doc = Jsoup.connect("http://financials.morningstar.com/valuation/price-ratio.html?t=AXP®ion=USA&culture=en_US").get();
for (Element table : doc.select("table#currentValuationTable.r_table1.text2")) {
for (Element row : table.select("tr")) {
Elements tds = row.select("td");
if (tds.size() > 6) {
System.out.println(tds.get(0).text() + ":" + tds.get(1).text());
}
}
}
}
catch (IOException ex) {
ex.printStackTrace();
}
// Attempt 2
try {
Document doc = Jsoup.connect(s).get();
for (Element table : doc.select("table#currentValuationTable.r_table1.text2")) {
for (Element row : table.select("tr")) {
Elements tds = row.select("td");
for (int i = 0; i < tds.size(); i++) {
System.out.println(tds.get(i).text());
}
}
}
}
catch (IOException ex) {
ex.printStackTrace();
}
//Attempt 3
try {
Document doc = Jsoup.connect(s).get();
Elements tableElements = doc.select("table#currentValuationTable.r_table1.text2");
Elements tableRowElements = tableElements.select(":not(thead) tr");
for (int i = 0; i < tableRowElements.size(); i++) {
Element row = tableRowElements.get(i);
System.out.println("row");
Elements rowItems = row.select("td");
for (int j = 0; j < rowItems.size(); j++) {
System.out.println(rowItems.get(j).text());
}
}
}
catch (IOException ex) {
ex.printStackTrace();
}
Чего добиваются или не достигают ваши попытки? – lfurini
Распечатайте, что «Документ» смог прочитать со страницы (используйте 'System.out.println (doc);'). Что-то говорит мне, что ваша проблема может быть связана с тем, что HTML-контент, который вы ищете, динамически добавляется JavaScript браузером, который Jsoup не может сделать, поскольку он не поддерживает JavaScript. В этом случае вы должны использовать более мощный инструмент, например, веб-драйвер (например, Selenium). – Pshemo
Попробуйте отключить JavaScript и посмотреть, можете ли вы видеть таблицы в браузере ... – Pshemo