我试图使用jsoup下载html表行,但它只解析部分html内容。我也尝试了下面的代码来加载完整的html内容,但是没有成功。如有任何建议,将不胜感激。
public class AmfiDaily {
public static void main(String[] args) {
AmfiDaily amfiDaily = new AmfiDaily();
amfiDaily.extractAmfiTable("https://www.amfiindia.com/intermediary/other-data/transaction-in-debt-and-money-market-securities");
}
public void extractAmfiTable(String url){
Document doc;
try {
FileWriter writer = new FileWriter("D:\\FTRACK\\Amfi Report " + java.time.LocalDate.now() + ".csv");
Document document = Jsoup.connect(url)
.userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")
.maxBodySize(0)
.timeout(100000*5)
.get();
Elements rows = document.select("tr");
for (Element row : rows) {
Elements cells1 = row.select("td");
for (Element cell : cells1) {
if (cell.text().contains(",")) {
writer.write(cell.text().concat(","));
}
else
{
writer.write(cell.text().concat(","));
}
}
writer.write("\n");
}
writer.close();
} catch (IOException e) {
e.getStackTrace();
}
}
}
1条答案
按热度按时间o75abkj41#
禁用javascript以查看jsoup所看到的内容。页面的一部分加载了ajax,因此jsoup无法访问它。但有一种简单的方法可以检查额外数据的来源。
您可以使用浏览器调试器检查“网络”选项卡并查看请求和响应。
您可以看到该表是从以下url下载的:https://www.amfiindia.com/modules/loadmodules/moneymarketsecurities
您可以直接使用此url来获取所需的数据。
要克服jsoup的限制并一次加载整个html,您应该使用selenium webdriver,示例如下:https://stackoverflow.com/a/54510107/9889778