无法刮标题

时间:2019-09-06 16:42:24

标签: java web-scraping jsoup

我已经成功地从页面上收集了我想要的所有数据,但是我无法弄清楚为什么我不能从同一年龄段提取标题或股票符号。我尝试过的所有方法均无效。

感谢任何可以提供帮助的人。

我编写的初始代码不能很好地工作,该站点的某个人已经提供了帮助。我知道表名是正确的,但是我似乎无法弄清楚为什么它不起作用。仅供参考,我想获取的是图表下方的股票代码和公司名称。

select *
  from tab
 where (person,date) in
  (
   select person,max(date)
     from tab
    group by person,month(date),year(date)
   )

我没有收到任何错误,并且可以轻松连接到url,但是代码只是返回一个空值。

1 个答案:

答案 0 :(得分:1)

我认为您需要更改选择器。

“ table.fullview-title tr td”->“ table.fullview-title tr td”

“ td.fullview-title:nth-​​of-type(2)”->“ a.fullview-ticker”

我希望这会有所帮助:

    public class DemoApplication {

    public static void main(String[] args) {
//  Simplification:
//        Scanner scanner = new Scanner(System.in);
//        System.out.println("Ticker: ");
//        String userInput = scanner.next();
//        final String url = "https://finviz.com/quote.ashx?t=" + userInput;
        final String url = "https://finviz.com/quote.ashx?t=LCI";

        try {
            final Document document = Jsoup.connect(url).get();
            ArrayList<String> dataArray = new ArrayList<>();
            for (Element row : document.select("table.fullview-title tr td")) {
                if (!row.select("a.fullview-ticker").text().contentEquals("")) {
                    String data = row.select("a.fullview-ticker").text();
                    dataArray.add(data);
                }
            }
            System.out.println(dataArray);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

输出:

[LCI]