我对java和HTML相当新。我一直试图从网页上的表中提取信息一段时间无济于事。根据我从浏览其他问题的理解,我知道我需要使用Jsoup(或其他类似但我使用Jsoup的东西)从网站上获取数据,但是当涉及到&时,我感到很困惑。 #34;节"和#34;孩子"什么不是为了找到我想要的具体信息。
String margins = "https://platinumtokens.com/";
Document doc = Jsoup.connect(margins).get();
Elements tableElements = doc.select("div");
System.out.println(doc);
System.out.println(tableElements.get(0));
我需要保存项目的名称和数组中的项目价格或组织它们的东西,但我仍然坚持如何将它们从网页中拉出来。
感谢您的帮助:)
编辑:我并不完全熟悉Java变量,但我希望将每个项目放入一个列表,其中包含买入价和卖出价,保证金,回报百分比和交易金额答案 0 :(得分:0)
您需要使用selenium web驱动程序,因为此网页使用Javascript来显示项目表。 我用phantomjs创建了一个测试代码。
http://www.seleniumhq.org/projects/webdriver/
https://github.com/bonigarcia/webdrivermanager
public void test2() {
// web driver setup
PhantomJsDriverManager.getInstance().setup();
PhantomJSDriver driver = new PhantomJSDriver();
// access the web page
driver.get("https://platinumtokens.com/");
// wait for loading
while (!(driver.executeScript("return document.readyState").equals("complete"))) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// list to store item infomation
List<Info> infos = new ArrayList<>();
// get tr tags
List<WebElement> tr = driver.findElementsByTagName("tr");
for (WebElement e: tr) {
// get td tags inside a tr tag
List<WebElement> td = ((RemoteWebElement) e).findElementsByTagName("td");
if (!td.isEmpty()) {
String name = ((RemoteWebElement) td.get(1)).findElementByTagName("a").getText();
Info info = new Info(name, td.get(2).getText(), td.get(3).getText());
infos.add(info);
}
}
// display infomation
for (Info info: infos) {
System.out.println(info.toString());
}
}
// to store a data
public static class Info {
private String item;
private String buy;
private String sell;
public Info(String item, String buy, String sell) {
this.item = item;
this.buy = buy;
this.sell = sell;
}
@Override
public String toString() {
return "Info{" +
"item='" + item + '\'' +
", buy='" + buy + '\'' +
", sell='" + sell + '\'' +
'}';
}
}