在java中获取网页的实际文本响应

时间:2014-02-26 20:34:55

标签: java http yandex yandex-api

我正在使用java并尝试获取网站的内容,以便我可以分析页面上的文本,但每次我从服务器“获取”响应时,它都来自登录页面而不是我正在看的网页。

我在所有浏览器上都登录了该网站,但我的应用程序无法将该页面看作是我。

我还尝试使用名为“Yandex”的API - > http://api.yandex.com/rca/ 作为一种解决方法。但是当我从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);

2 个答案:

答案 0 :(得分:0)

您尝试访问的网址通过登录限制了访问权限。即使您通过浏览器登录,也无法从Java应用程序访问该页面,因为浏览器具有与目标网站的Authenticated Session。您的Java应用程序看不到相同的会话。

您必须研究登录网站的方式,然后获取页面内容。

答案 1 :(得分:0)

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

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

希望这有帮助!