试图从网页上的 table 中提取信息
Trying to pull information from a table on a webpage
我是 java 和 HTML 的新手。一段时间以来,我一直试图从网页上的 table 中提取信息,但无济于事。根据我浏览其他问题的理解,我知道我需要使用 Jsoup(或类似的东西,但我正在使用 Jsoup)从网站上获取数据,但是当涉及到 "nodes" 和 "children" 以及什么不是为了找到我想要的特定信息。
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 变量,但我希望将每个单独的项目及其买卖价格、保证金、return 百分比和交易金额放入一个列表中
您需要 selenium 网络驱动程序,因为此网页使用 Javascript 来显示项目 table。
我用 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 + '\'' +
'}';
}
}
我是 java 和 HTML 的新手。一段时间以来,我一直试图从网页上的 table 中提取信息,但无济于事。根据我浏览其他问题的理解,我知道我需要使用 Jsoup(或类似的东西,但我正在使用 Jsoup)从网站上获取数据,但是当涉及到 "nodes" 和 "children" 以及什么不是为了找到我想要的特定信息。
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 变量,但我希望将每个单独的项目及其买卖价格、保证金、return 百分比和交易金额放入一个列表中
您需要 selenium 网络驱动程序,因为此网页使用 Javascript 来显示项目 table。 我用 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 + '\'' +
'}';
}
}