当前位置: 首页 > 知识库问答 >
问题:

Java-HTML客户端在完成页面加载之前返回响应

太叔炎彬
2023-03-14

我必须从网页上阅读某一领域的内容。我已经被告知,我需要获得整个页面,然后从html内容中提取文本。我正在使用下面的程序来获取所需的页面html内容。现在的问题是,这个网页加载我想要读取的实际文本值需要几秒钟的时间,即使前面加载了其余的静态页面组件。我的程序在静态组件加载之后但在我的值加载之前返回html内容。因此,我得到的最终HTML有页面加载过程pic,而不是实际值。有没有人可以指导我在这个程序中所需的更改,以帮助它等到页面完全加载?

HttpPost post = new HttpPost("https://..../login");

    //prepare get method
    HttpGet httpget = new HttpGet("https://...../value#/123");

    // add parameters to the post method
    List<NameValuePair> parameters = new ArrayList<NameValuePair>();
    parameters.add(new BasicNameValuePair("username", "<name>"));
    parameters.add(new BasicNameValuePair("password", "<password>"));
    try {
        UrlEncodedFormEntity sendEntity = new UrlEncodedFormEntity(parameters, HTTP.DEF_CONTENT_CHARSET);
        post.setEntity(sendEntity);

        // create the client and execute the post method
        HttpClient client = HttpClientBuilder.create().build();

        HttpResponse postResponse = client.execute(post);
        System.out.println("Statusline: " + postResponse.getStatusLine());


        //Output the Response from the POST
        System.out.println(getStringFromInputStream(postResponse.getEntity().getContent()));

        //releasing POST
        EntityUtils.consume(postResponse.getEntity());

        //Execute get
        HttpContext context = new BasicHttpContext();

        HttpResponse getResponse = client.execute(httpget);//, context);
        System.out.println("Statusline: " + getResponse.getStatusLine());

        if (getResponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK)
            throw new IOException(getResponse.getStatusLine().toString());

        System.out.print(getStringFromInputStream(getResponse.getEntity().getContent()));

共有1个答案

东门翰
2023-03-14

您也可以使用Jsoup库访问http://Jsoup.org

 类似资料:
  • 我必须从网页上阅读某个领域的内容。有人告诉我,我需要获取整个页面,然后从html内容中提取文本。我使用以下程序来获取所需的页面html内容。现在的问题是,这个网页需要几秒钟的时间来加载我想要读取的实际文本值,即使其他静态页面组件都是在前面加载的。我的程序在静态组件加载之后,但在我的值加载之前,返回html内容。因此,我得到的最终HTML具有页面加载过程pic,而不是实际值。有没有人可以指导我在这个

  • 我正在使用selenium页面对象模型下面是问题场景我正在使用below命令点击一个元素 driver.findElement(by.xpath(“xxxxxxx”)).click(); 当代码执行上面的行时,在浏览器中已经执行了单击,一个新的页面开始加载,但是代码在上面的行处停留直到整个页面加载。在页面完全加载之前,我无法在任何webelemnet上执行任何操作。下面是代码: WebElemen

  • 问题内容: 我们使用jQuery的全局ajaxError()处理函数来警告用户任何AJAX失败: 不幸的是,如果用户在完成加载之前离开页面,则也会触发此全局错误处理程序。下面是重现该错误的步骤: 用户访问页面A,页面A包含通过AJAX加载的元素。 A页上的AJAX元素开始加载。 在页面A上的AJAX元素加载完成 之前, 用户单击链接即可访问页面B。 在浏览器重定向到页面B之前,错误对话框将短暂出现

  • 在我的Spring Boot 2.2. x Web应用程序中,我需要拦截404错误,以便在呈现错误页面或返回带有错误信息的json之前执行一些自定义逻辑。 实现这一点的正确方法是什么? 目前,我正在尝试使用类,但我不知道使用(如果抛出了任何异常)处理哪个异常。。。 注意:我已经尝试拦截,但这似乎不起作用...(未触发处理程序)。 我还在<code>应用程序中启用了此功能。属性: 还有其他建议吗?

  • 问题内容: 背景 我正在客户端使用HTTP流(服务器推送)情况下的响应。尽管服务器可以通过关闭响应来关闭连接,但是客户端也需要这样做。 问题 客户端在一个单独的线程中处理,如下所示: 因此,当我从发起连接的线程进行调用时(重要的信息是它与处理输入的线程不同),该调用将无限期挂起。我什至把它留了一夜,它仍然挂着。即使打电话也无济于事。 有什么建议吗? 问题答案: 在没有可用字节的情况下,如果不更改读

  • 问题内容: 我的网站上有一个版块,在进行一些密集的通话时加载速度很慢。 知道如何div在页面准备时显示类似于“加载”的内容,然后在一切准备就绪时消失吗? 问题答案: 我需要这个,经过一番研究,我想到了这个(需要jQuery): 首先,在标签之后添加以下代码: 然后将div和图片的样式类添加到CSS: 然后,将此JavaScript添加到您的页面中(当然,最好在页面结尾处,在结束