我正在尝试使用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();
}
因此,我不会得到满载的页面。我需要类似的东西,当它完全加载时读取页面的选项。
谢谢你!
答案 0 :(得分:0)
我正在搜索的是" 网页搜寻"。我尝试了不同的库和语言,如JavaScript和Python(PhantomJS,Zombie.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();
}
所以,我希望如果有人像我一样绝望,这会有所帮助。