如何解决使用 java 和 jsoup 进行网页抓取
我正在尝试从下表中抓取数据。
Yahoo finance CBOE Volatility Index
我正在使用 jsoup。
String url = "https://finance.yahoo.com/quote/%5EVIX/history?p=%5EVIX&guccounter=1&guce_referrer=aHR0cHM6Ly9tYWlsLmdvb2dsZS5jb20v&guce_referrer_sig=AQAAAKU5UXnZEhNK_s1k-l6fQ7l-jFaR2xghH5NOhaohsec-HThT1BaEsni-hUlysVCFWpzd4qa2OZ2YZtBDJNQqKw1Uh64_nppDI4RnzPnTgxDGta123-A_SbIBm4SA5B0xopHvDcl5A21esFvWceZnRJPk6ohtud7OGJpWcNLdADYT";
Document doc = Jsoup.connect(url).get();
Element table = doc.getElementById("mrt-node-Col1-1-HistoricalDataTable");
Elements rows=table.select("tr");
Elements first=rows.get(0).select("th,td");
List<String>headers=new ArrayList<>();
for(Element header:first)
headers.add(header.text());
List<Map<String,String>> listMap = new ArrayList<Map<String,String>>();
for(int row=1;row<rows.size()-1;row++) {
Elements colVals = rows.get(row).select("th,td");
int colCount = 0;
Map<String,String> tuple = new LinkedHashMap<String,String>();
for(Element colVal : colVals)
tuple.put(headers.get(colCount++),colVal.text());
listMap.add(tuple);
}
通过这种方法,我只能得到前 100 行或更多行。这是因为它首先加载该数量的行,每当我们滚动到该行的该位置时,就会加载新的行。我找不到任何分页,网络调用也没有任何帮助。数据似乎以 gif 格式编码(只要滚动鼠标事件)。
我找到了一种使用 selenium Web 驱动程序并获取所有数据的方法。我想知道有没有什么办法可以只用 Jsoup 来解决这个问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。