2014-02-26 33 views
0

我正在使用java并试图获取网站的内容,以便我可以分析页面上的文本,但是每当我“获取”响应时服务器,它来自一个登录页面,而不是我正在查看的网站页面。在java中获取网页的实际文本响应

我在所有浏览器上登录了该网站,但我的应用程序无法看到该页面,就好像它是我一样。

我也尝试使用名为“Yandex” - >http://api.yandex.com/rca/ 的API作为解决方法。但是当我从Yandex调用该页面(将获得其内容)时,我只能看到基于返回的登录页面的信息。

任何人都可以给我一个方向去调查吗?我希望能够在我工作的网站的页面上获得一个项目,但似乎不可能。

m_strseedpath = "http://myUrl.com/mypage.html"; //not https  
URLConnection connection = new URL("http://rca.yandex.com/?key={MyActualKeyNotThisText}&url=" + m_strSeedUrlPath + "").openConnection(); 
connection.setRequestProperty("Accept-Charset", "UTF-8"); 
InputStream response = connection.getInputStream(); 
StringWriter writer = new StringWriter(); 
IOUtils.copy(response, writer, "UTF-8"); 
String strString = writer.toString(); 

System.out.println(strString); 

回答

0

URLConnection对象将连接到页面,但在不同的会话中。您必须通过编程从Java代码登录。

为登录页面创建一个URLConnection对象,POST用户名和密码,从URLConnection对象接收获取InputStream的内容,最后创建一个到您希望分析的页面的新连接。您还必须使用cookie才能查看第二页。

希望这会有所帮助!

0

您尝试访问的URL访问通过登录受到限制。即使您通过浏览器登录,也无法从Java应用程序访问该页面,因为浏览器与目标网站之间具有经过身份验证的会话。同一个会话对于您的Java应用程序不可见。

您必须研究如何登录网站,然后获取网页内容。

+0

如果我要将网站cookie与我的请求一起发送,是否可以解决问题?尽管cookie可能是加密的或其他什么 – rockit

+0

我不确定,但你必须亲自尝试一下。 它可能工作。许多浏览器都使用sessionId在浏览器和网站之间进行通信,请尝试使用它。 – Kakarot

+2

所有服务器都看到的是http请求。它不关心谁在发送它。使用fiddler拦截来自浏览器的请求,并使用Java重播。必须工作。 –