Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 提取隐藏在DIV id下的值_Java_Html_Jsoup - Fatal编程技术网

Java 提取隐藏在DIV id下的值

Java 提取隐藏在DIV id下的值,java,html,jsoup,Java,Html,Jsoup,你好,Java专家, 我正在尝试从给定的URL地址提取数据,其中信息隐藏在div id下。我的URL查询页面如下所示: 我给肽序列作为我的查询,然后点击搜索数据集按钮查看结果作为一个表 但当我试图查看页面源代码以HTML形式查看结果时,我没有看到该表 使用“firebug”后,我可以在HTML中看到该表,如下所示: [![在此处输入图像描述][2][2] 为了获取查询数据,我编写了简单的JAVA脚本: package retrieve.information; import java.io.IO

你好,Java专家, 我正在尝试从给定的URL地址提取数据,其中信息隐藏在div id下。我的URL查询页面如下所示:

我给肽序列作为我的查询,然后点击搜索数据集按钮查看结果作为一个表

但当我试图查看页面源代码以HTML形式查看结果时,我没有看到该表

使用“firebug”后,我可以在HTML中看到该表,如下所示:

[![在此处输入图像描述][2][2]

为了获取查询数据,我编写了简单的JAVA脚本:

package retrieve.information;
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class DemoExtractHidenHtml {
    public static void main(String[] args) {
        Document document;
        try {
            document = Jsoup.connect("http://example.com/xyz_proxi.jsp#{\"searched_button\":\"datasets\",\"peptide\":\"NLAVSQVVHK\"}").userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21").get();
            Element dataset = document.select("td.table[datasets]_row[0]_column[1]").first();
            System.out.println(dataset);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}
当然,它对我不起作用,我得到以下错误:

Exception in thread "main" org.jsoup.select.Selector$SelectorParseException: Could not parse query 'td.table[datasets]_row[0]_column[1]': unexpected token at '_row[0]_column[1]'
at org.jsoup.select.QueryParser.findElements(QueryParser.java:196)
at org.jsoup.select.QueryParser.parse(QueryParser.java:65)
at org.jsoup.select.QueryParser.parse(QueryParser.java:39)
at org.jsoup.select.Selector.<init>(Selector.java:84)
at org.jsoup.select.Selector.select(Selector.java:106)
at org.jsoup.nodes.Element.select(Element.java:286)
at retrieve.information.DemoExtractHidenHtml.main(DemoExtractHidenHtml.java:14)

任何人都知道如何克服这个问题,我是JAVA的新手。

如果你能在Firebug中看到这个表,那么复制它的SelectorCSS路径并按如下方式使用

document.select(selector_str);
document.select("#rso > div > div:nth-child(1) > div > h3 > a");

嗨,我已经用硒解决了这个问题。因此,我的问题的解决方案是:

package extract.data;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class ExtractDataDynamic {
private static Scanner kb;

public static void main(String[] args) {
    // TODO Auto-generated method stub
    kb = new Scanner(System.in);
    String userpepseq;
    userpepseq = kb.nextLine();
    if (userpepseq.trim().isEmpty()){
        System.out.println("User didn't input any value!");
    } else {
        if (Pattern.matches("[a-zA-Z]+", userpepseq) == true) {
            WebDriver drivermassid = new FirefoxDriver();
            drivermassid.manage().window().maximize();
            drivermassid.get("http://exmaple.com/xyz_proxi.jsp#{\"searched_button\":\"datasets\",\"peptide\":\""+userpepseq+"\"}");
            //Here we are storing the value from the cell in to the string variable
            String sCellValuemassid = drivermassid.findElement(By.xpath(".//*[@class='result']/tbody")).getText();
            drivermassid.quit();
            if (sCellValuemassid.length() > 0){
                String mid="";
                String status="";
                Pattern pattern = Pattern.compile("MSV\\d+\\s+\\d+\\s+");
                Matcher macther= pattern.matcher(sCellValuemassid);
                while (macther.find()){
                    mid=((macther.group()).split("\\ "))[0];
                    status=((macther.group()).split("\\ "))[1];
                }
                if (meid.length() > 0 ){
                    WebDriver drivermasspro = new FirefoxDriver();
                    drivermasspro.manage().window().maximize();
                    drivermasspro.get("http://exmaple.com/xyz_proxi.jsp#{\"searched_button\":\"proteins\",\"peptide\":\""+userpepseq+"\"}");
                    String sCellValuemasspro = drivermasspro.findElement(By.xpath(".//*[@class='result']/tbody")).getText();
                    drivermasspro.quit();
                    if (sCellValuemasspro.length() > 0){
                        String [] proteinifo = sCellValuemasspro.split("\\n");
                        for (int i=0;i<proteinifo.length;i++) {
                            String [] subproteinifo = proteinifo[i].split("\\ ");
                            System.out.println(mid+" "+status+" "+subproteinifo[1]);
                        }
                    }
                } else {
                    System.out.println(" ID doesn't exist for "+userpepseq +".");
                }
            } else {
                System.out.println(userpepseq+" doesn't exist in database.");
            }


        } else {
            System.out.println(userpepseq+" should not contain any number!");
        }
    }
因为表是动态的,他们使用javascript将数据填充到表中,所以我发现这是解决问题的方法之一。 谢谢