因为有些资源可能是JS动态加载的,所以解析HTML文本获取资源链接不能满足需求。如图所示,怎样才能像浏览器一样,获取到这些请求?

解决方案 »

  1.   

    差不多,现在就想获取到动态请求的URL,既然浏览器能获取到,其他编程语言应该也有办法获取到的吧?
      

  2.   

    所有发给tomcat的请求,都可以用一个servlet来拦截它们
      

  3.   

    我是想获取其他网站上网页的请求,这些请求不走我的tomcat啊。有没有办法在后台模拟,产生这些请求呢?
      

  4.   

    这些请求不走我的服务器,是其他网站上的,有没有办法后台模拟,产生这些请求呢?或者,浏览器是怎么获得这些请求的,Java能不能效仿?
      

  5.   

    httpclient  设置下User-Agent参数,模拟浏览器请求
    然后抓取下href的链接参数。
      

  6.   

    有些链接不是HTML页面本身的,而是在JS里,执行JS,才会有这些链接请求,后台好像没办法模拟。
      

  7.   

    public static String getHttpResponse(String allConfigUrl) {
            BufferedReader in = null;
            StringBuffer result = null;
            try {
             System.out.println(allConfigUrl);
                URI uri = new URI(allConfigUrl);
                URL url = uri.toURL();
                URLConnection connection = url.openConnection();
                connection.setRequestProperty("Content-Type", "application/json, text/javascript, *; q=0.01");
               connection.setRequestProperty("Charset", "utf-8");
                connection.setRequestProperty("Referer", "http://app.cnss.com.cn/tide_search.php/");
                //connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36");
                connection.connect();
                 
                result = new StringBuffer();
                //读取URL的响应
                in = new BufferedReader(new InputStreamReader(
                        connection.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result.append(line);
                }
                 
                return '['+result.toString().substring(2,result.toString().length()-1)+"]";
                 
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
            return null;
             
        }
      

  8.   

    用selecnium试试吧,他可以模拟浏览器
      

  9.   

    1. 正则匹配页面上的所有链接,这个是最简单的,不需要工具,而且正则完全可以实现。
    2. 像楼上说的,使用 selenium,初次使用会有一点点学习成本,但是很容易,上手之后,你需要做的,就是调用里面的匹配方法,获取页面上的链接, easy.
    3. 以上