作为序言,我是一名初学java学习者,试图找出我需要学习/掌握的东西才能解决这个问题。所以我正在寻找实现这一目标所需的广泛行程/过程。
我正在尝试制作一个程序,从医学图像atlas网站显示一个随机页面,同时隐藏页面中的大多数元素,但图片。然后单击按钮,将显示注释/说明。该课程非常适合学习/复习现场诊断或教学。
网站网址格式为/image.asp?n=X&Case=Y
其中X =来自特定疾病实体的图片#和Y =疾病实体。 X可以高达50,Y高达750(按器官系统大致分组)
理想情况下,程序会在该范围内生成随机X和随机Y的链接,测试网页是否存在。如果没有,重复;如果它确实那么它被送入隐藏网页中某些元素的程序。单击按钮将显示包含图像注释/描述的元素。
使用java实现此目标的最佳方法是什么?我需要学习什么来尝试这个?
由于
答案 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;
}
我希望有所帮助。