我松散地知道如何在jsoup中解析html表格,但我正在使用的表格在网页的某个地方,我不知道如何去做: https://finance.yahoo.com/calendar/earnings?symbol=nflx
是收入日期的那个。
我知道你必须这样做
Document doc = Jsoup.connect("https://finance.yahoo.com/calendar/earnings?symbol=nflx").get();
然后循环:
for (Element table : doc.select("some string") {
如何获取表格所需的字符串?
答案 0 :(得分:3)
您实际上并不需要使用for (Element table : doc.select("some string") {
遍历所有代码,您可以直接从代码中获取表格。
为了能够获得该表,您需要首先使用您喜欢的浏览器的开发人员工具检查代码(假设您使用的是那个)。像这样:
并确定您想要获得的元素,在您的情况下,特定的表是:
<table class="data-table W(100%) Bdcl(c) Pos(r) BdB Bdc($c-fuji-grey-c)" data-reactid="4">
要获得它的代码是:
Document doc = Jsoup.connect("https://finance.yahoo.com/calendar/earnings?symbol=nflx")
.timeout(600000) //added timeout because my internet sucks
.get();
Elements tableDiv = doc.getElementsByAttributeValue("class", "data-table W(100%) Bdcl(c) Pos(r) BdB Bdc($c-fuji-grey-c)");
然后你有一个org.jsoup.select.Elements
集合,你可以用同样的方式解析,使用方法getElementsBy[whateverAreAvailable]
以下是如何仅打印该表的示例:
tableDiv.forEach(tbody -> tbody.getElementsByTag("tbody")
.forEach(tr -> System.out.println(tr)));
使用您喜欢的IDE找出要使用的方法。我认为这足以让你弄明白去哪里。