从网站显示随机网页的一部分

时间:2017-03-10 22:10:42

标签: java html web

作为序言,我是一名初学java学习者,试图找出我需要学习/掌握的东西才能解决这个问题。所以我正在寻找实现这一目标所需的广泛行程/过程。

我正在尝试制作一个程序,从医学图像atlas网站显示一个随机页面,同时隐藏页面中的大多数元素,但图片。然后单击按钮,将显示注释/说明。该课程非常适合学习/复习现场诊断或教学。

网站网址格式为/image.asp?n=X&Case=Y
其中X =来自特定疾病实体的图片#和Y =疾病实体。 X可以高达50,Y高达750(按器官系统大致分组)

理想情况下,程序会在该范围内生成随机X和随机Y的链接,测试网页是否存在。如果没有,重复;如果它确实那么它被送入隐藏网页中某些元素的程序。单击按钮将显示包含图像注释/描述的元素。

使用java实现此目标的最佳方法是什么?我需要学习什么来尝试这个?

由于

1 个答案:

答案 0 :(得分:0)

从广义上讲,您可能希望使用2页:

第一页是可见的,是您向人们展示的内容

第2页是隐藏的,你想使用PHP的curl函数加载一个网站,然后你使用substr解析它所需的信息,以及其他随处可见的googled技术(查找解析或substr)

然后将其打印为xml格式,并通过第一页使用JavaScript加载它。

理论上可以通过json直接调用,但是你可能会遇到CORS问题。

棘手的部分是加载xml,所以让我帮你解决一下:

function loaddata(lurl){
    if (window.XMLHttpRequest){
        xmlHttp=new XMLHttpRequest();
    }
    else{
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlHttp.open("GET",lurl,false);
    xmlHttp.send(null);
    var xmlDoc = xmlHttp.responseXML;
    x=xmlDoc.documentElement;
    for (i=0;i<x.childNodes.length;i++){
        if (x.childNodes.item(i).nodeType==1){
        firstNode=x.childNodes.item(i).childNodes;
        Arrtype = firstNode[1].childNodes[0].nodeValue;
        if (typeof window[Arrtype] == 'undefined'){
            window[Arrtype] = new Array();
        }
        Arrsize = window[Arrtype].length;
        window[Arrtype][Arrsize] = new Array();
        Arrc = 0;
            for (j=0;j<firstNode.length;j++){
                if (firstNode[j].nodeType==1 && j != 1){
                    if(isNaN(firstNode[j].childNodes[0].nodeValue) == false){
                        window[Arrtype][Arrsize][Arrc] = parseFloat(firstNode[j].childNodes[0].nodeValue,10);
                    }
                    else{
                        window[Arrtype][Arrsize][Arrc] = firstNode[j].childNodes[0].nodeValue;
                    }
                Arrc = Arrc + 1;
                }
            }
        }
    }
}

你可以在php中找到这个脚本的工作xml文件的例子:

http://www.tffan.com/tiles/pml.php

此外,这里是curl脚本的一部分:它确实需要发布一个url,但是你应该通过研究它来获得这个想法:

$projUrl = $_POST["opt_url"];
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL, $projUrl);
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
if (empty($buffer)){
    print "Nothing returned from url.<p>";
}
else{
    $doc = new DOMDocument();
    @$doc->loadHTML($buffer);
    $tag = 'a';
    $elem = 'href';
    $tags = $doc->getElementsByTagName($tag);
    foreach ($tags as $tag) {
        $hotra = $tag->getAttribute($elem);
        if (substr($hotra, 0, 3) == "htt") {
            if (substr($hotra, 0, 13) == "http://ssh.tf") {
                if (strpos($hotra, 'Thread', 0) == 0 ){
                    array_push($a,$tag->getAttribute($elem));
                }
            }
        }
    }
$doc = null;
echo $buffer;
}

我希望有所帮助。