获取JavaServer Page的全部信息 - Web Scraping

时间:2014-06-09 21:08:55

标签: jsp url web-scraping inputstream

我正在尝试使用java.net.URLConnection连接到网址主页,并将网络源代码作为String获取。使用我的webbrowser主页是完全加载的(需要一些时间),列表中填充了一些项目(在SourceCode中:simpleListItem.jsp(JavaServer Page))。

如果我通过我的Java应用程序连接并打印String,则此项不属于我的字符串。这就像我的应用程序正在流式传输代码并在列表填充之前完成。

通过浏览器的网页源代码的结构如下:

 start hits.jsp
     start simpleListItem.jsp 
     start simpleListItem.jsp 
       ...
     start simpleListItem.jsp
 end hits.jsp

通过Java应用程序的网页源代码的结构如下:

 start hits.jsp
 send hits.jsp

如何获取网址的所有信息?所有JavaServerPages-ScriptElements?

希望我的问题清楚:D

修改

在你的帮助下,我想我现在可以指明我的问题;) 就像home所说,问题是,我希望获得通过JavaScript添加到页面的网页信息, 页面发送后。所以在我的例子中,我无法得到simpleListItem.jsp的信息。我的Java方法只是连接到URL并打印输出,见下文:

 public void readURL(String url) {
    URL mURL = new URL(url);
    URLConnection mConnection = mURL.openConnection();
    BufferedReader in = new BufferedReader(new InputStreamReader(
                                mConnection.getInputStream()));
    String inputLine;
    while ((inputLine = in.readLine()) != null) 
        System.out.println(inputLine);
    in.close();
}

因此,我不会得到满载的页面。我需要类似的东西,当它完全加载时读取页面的选项。

谢谢你!

1 个答案:

答案 0 :(得分:0)

我正在搜索的是" 网页搜寻"。我尝试了不同的库和语言,如JavaScript和Python(PhantomJSZombie.js,..)。我在安装它们时遇到了很大的困难,尤其是在我的Windows 7 PC上的Zombie.js。我终于得到了它的工作,但它没有加载页面的动态内容。完全绝望我找到了:

JSoup !!!!!!!!!!

JSoup是一个Java库。所以我需要安装的是将库复制到我的Java项目中。它完美无缺!加载了所有动态内容,我可以使用cookie来避免会话过期"错误。如果您熟悉Java,我可以为您推荐JSoup。

我为你发布了一些开头代码:

try {
   // Extract jSessionId from startURL for Cookies
   String startURL =  "xxxxx";
   Document startPage = Jsoup.connect(startURL)
                             .userAgent("Mozilla")
                             .get();
   Element jSessionElement = startPage.getElementById("jSessionElementID");
   JSessionID = getJessionIDfromElement(jSessionElement);  // own method

   // Connect to page of interest
   String resultURL = "xxxxxxxxxx";
   Document resultPage = Jsoup.connect(resultURL)
                              .timeout(10000)
                              .cookie("JSESSIONID", JSessionID)
                              .get();

   // use html parser of JSoup to extract content

} catch (IOException e) {
   e.printStackTrace();
}

所以,我希望如果有人像我一样绝望,这会有所帮助。