【问题标题】:Getting the actual text response of a web page in java在java中获取网页的实际文本响应
【发布时间】:2014-02-26 20:34:54
【问题描述】:

我正在使用 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);

【问题讨论】:

    标签: java http yandex yandex-api


    【解决方案1】:

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

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

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 如果我将站点 cookie 连同我的请求一起发送,这会解决问题吗?即使 cookie 可能已加密或其他情况
      • 我不确定,您必须自己尝试看看。它可能会起作用。许多浏览器也使用 sessionId 在浏览器和站点之间进行通信,也可以尝试使用它。
      • 服务器看到的只是http请求。它不关心是谁发送的。使用 fiddler 拦截来自浏览器的请求,并使用 Java 重放它。必须工作。
      猜你喜欢
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-08
      • 2011-10-27
      • 2011-06-15
      相关资源
      最近更新 更多