- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
尝试练习使用 JSoup 从表中提取数据。不明白为什么我无法从中提取“已发行股票”字段
https://finance.yahoo.com/q/ks?s=AAPL+Key+Statistics
这里有两次尝试,其中“s”是 AAPL:
public class YahooStatistics {
String sharesOutstanding = "Shares Outstanding:";
public YahooStatistics(String s) {
String keyStatisticsURL = ("https://finance.yahoo.com/q/ks?s="+s+"+Key+Statistics");
//Attempt 1
try {
Document doc = Jsoup.connect(keyStatisticsURL).get();
for (Element table : doc.select("table.yfnc_datamodoutline1")) {
for (Element row : table.select("tr")) {
Elements tds = row.select("td");
for (Element td : tds.select(sharesOutstanding)) {
System.out.println(td.ownText());
}
}
}
}
catch (IOException ex) {
ex.printStackTrace();
}
//Attempt 2
try {
Document doc = Jsoup.connect(keyStatisticsURL).get();
for (Element table : doc.select("table.yfnc_datamodoutline1")) {
for (Element row : table.select("tr")) {
Elements tds = row.select("td");
for (int j = 0; j < tds.size() - 1; j++) {
Element td = tds.get(j);
if ((td.ownText()).equals(sharesOutstanding)) {
System.out.println(tds.get(j+1).ownText());
}
}
}
}
}
catch(IOException ex) {
ex.printStackTrace();
}
尝试返回:BUILD SUCCESSFUL,仅此而已。
我已经在浏览器上禁用了 JavaScript,但表格仍然显示,因此我假设这不是用 JavaScript 编写的,而是用 HTML 编写的。
如有任何建议,我们将不胜感激。
最佳答案
编辑后有关源的注释:
ownText()
而不是text()
。 text()
为您提供所有元素及其所有子元素的组合文本。在本例中,元素包含 Shares Outstanding<font size="-1"><sup>5</sup></font>:
,所以它的组合文本是 "Shares Outstanding5:"
。如果您使用ownText
它将只是 "Shares Outstanding:"
.:
)。更新 sharesOutstanding
中的值相应地。+
继 AAPL
.您可以在找到匹配项后中断循环,返回到原始版本(如上进行更正) - 请参阅注释 - 或者您可以尝试使用更复杂的查询,该查询只会匹配一次:
Elements elems = doc.select("td.yfnc_tablehead1:containsOwn("+sharesOutstanding+") + td.yfnc_tabledata1");
if ( ! elems.isEmpty() ) {
System.out.println( elems.get(0).owntext() );
}
此选择器为您提供所有 td
类为 yfnc_tabledata1
的元素,其前一个兄弟是 td
类为 yfnc_tablehead1
的元素并且其自己的文本包含“已发行股票:”字符串。这基本上应该选择您需要的确切 TD。
注意:此答案的先前版本是关于 Elements.select()
之间差异的长篇大论。和Element.select()
。事实证明,我完全错了,如果您纠正了上述四点,您的原始版本应该可以工作。所以澄清一下:select()
在Elements
上实际上确实会查看每个元素的内部,并且结果列表可能包含原始列表中与选择匹配的任何元素的后代。对此感到抱歉。
关于java - 在雅虎财经上使用 JSoup 提取表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30956743/
我想开发一个小应用程序来自动从 Google Finance 获取股票价格并将其存储在我的本地机器中以供将来分析。 谁能给我一些如何开始的线索? 我知道一些 C#。它适合这个目的吗? 先感谢您。 最佳
直到昨天以下网址(Google Finance API) https://www.google.com/finance/getprices?q=TSLA&x=NASDAQ&i=3600&p=5d&f=
Google 如何设法正确对齐 google finance url 中“获取报价”搜索框建议下拉列表中的第二列(即代码名称) 示例:如果您输入 iii - 第二列完全对齐。 它不使用固定宽度的字体
我想使用 Google Finance API 转换货币。但它在我的本地机器(印度)上不起作用。当我从位于美国的一台服务器进行访问并提供正确的结果时,它工作正常。 网址:https://finance
我之前试图解释这一点,但显然失败了! 因此,如果您打开了一个 google finance 图表,例如: http://www.google.com/finance?q=INDEXNASDAQ:.IX
我正在努力将财务数据输入谷歌表格。我在这里阅读了一些答案并尝试了这个:=importhtml("https://www.google.com/finance?q="&B2&"&fstype=ii&ei
我是一名优秀的程序员,十分优秀!