如何用javascript 读取另一个页面中内容
我知道一个网络页面的网址(如:http://www.amazon.com/dp/B001SV571M/),我想在我本页面显示那个网络页面上某些地方的文本的信息,怎么在后台...
我知道一个网络页面的网址(如:http://www.amazon.com/dp/B001SV571M/),我想在我本页面显示那个网络页面上某些地方的文本的信息,怎么在后台实现(只用简单的JSP、Servlet或JavaScript技术)?
我说具体一点吧,那个网络页面我用浏览器的“查看源文件”显示的代码中有:.....<SPAN id=btAsinTitle>super<SPAN>.....<TD><B class=priceLarge>$30.00</B></TD>,我就是想获得“super”和“$30.00”两个值,希望给源代码,小生将感激不尽!
我看了二楼的代码,但在实际的B/S数据交互中,prevWin.innerHTML=xhr.responseText;好像获得的并不是HTML代码,而是服务器端用PrintWrite对象“写”给客户端的数据吧? 展开
我说具体一点吧,那个网络页面我用浏览器的“查看源文件”显示的代码中有:.....<SPAN id=btAsinTitle>super<SPAN>.....<TD><B class=priceLarge>$30.00</B></TD>,我就是想获得“super”和“$30.00”两个值,希望给源代码,小生将感激不尽!
我看了二楼的代码,但在实际的B/S数据交互中,prevWin.innerHTML=xhr.responseText;好像获得的并不是HTML代码,而是服务器端用PrintWrite对象“写”给客户端的数据吧? 展开
6个回答
展开全部
你这样做首先你要解决浏览器的跨域问题。也就是说。不同的url地址下的javaScript是不能直接访问的。也就是说,很难通过在你的网页中直接得到目标页面的结构对象。
之所以说是不能直接得到,是因为。你可以使用xmlhttp对象或别的什么技术是可以得到你的目标页面的。但是得到的是一个html字符串。你还要解析这个html字符串,而解析html字符串正是浏览器要做的事情。简单讲,你要实现一个浏览器。
当然。java中有些简单的解析器,能够解析出比较简单的html代码。但是对于你的要求,我实在不能给出确定的答案。
最后一招:可以在你得到的html字符串中增加相关的脚本,然后组合成新的html字符串。然后把这个新的html丢给浏览器解析。理论上,是可以做得到解析任何的网页的。
之所以说是不能直接得到,是因为。你可以使用xmlhttp对象或别的什么技术是可以得到你的目标页面的。但是得到的是一个html字符串。你还要解析这个html字符串,而解析html字符串正是浏览器要做的事情。简单讲,你要实现一个浏览器。
当然。java中有些简单的解析器,能够解析出比较简单的html代码。但是对于你的要求,我实在不能给出确定的答案。
最后一招:可以在你得到的html字符串中增加相关的脚本,然后组合成新的html字符串。然后把这个新的html丢给浏览器解析。理论上,是可以做得到解析任何的网页的。
展开全部
我没看1楼的程序好用不好用,不过lz的问题就是java网页数据抓取问题,其实不难的,如果baidu java网页数据抓取会有好多,如果楼上代码不好用,就按我说的办吧。
原理就是连接url,获取一个字符串就是你看到的源文件,然后再去解析而已,lz要对自己有信心哦。考得代码你就懒得去学了,只有通过自己的努力才能成长。
原理就是连接url,获取一个字符串就是你看到的源文件,然后再去解析而已,lz要对自己有信心哦。考得代码你就懒得去学了,只有通过自己的努力才能成长。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
window.onload=initAll;// 网页加载执行
var xhr=null;
var xPos,uPos;
function initAll(){
var allLinks=document.getElementsByTagName("a");
for(var i=0;i<allLinks.length;i++){
allLinks[i].onmouseover=showPreview;
allLinks[i].onmouseout=hidePreview;
}
}
function showPreview(evt){ //事件处理;
getPreview(evt);
return false;
}
function hidePreview(){
document.getElementById("previewWin").style.visibility="hidden";
}
function getPreview(evt){
if(evt){
var url=evt.target;
}
else {
evt=window.event;
var url=evt.srcElement;
}
xPos=evt.clientX;
yPos=evt.clientY;
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}
else{
if(window.ActiveXObject){
try{
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
}
}
}
if(xhr){
xhr.onreadystatechange=showContents;
xhr.open("GET",url,true);
xhr.send();
}
else{
alert("Sorry,but i can't create an XMLHttpRequest");
}
}
function showContents(){
var prevWin=document.getElementById("previewWin");
if(xhr.readyState==4){
if(xhr.status==200){
prevWin.innerHTML=xhr.responseText;
}
else{
prevWin.innerHTML="there was a problem with the request"+xhr.status;
}
prevWin.style.top=parseInt(yPos)+2+"px";
prevWin.style.left=parseInt(xPos)+2+"px";
prevWin.style.visibility="visible";
prevWin.onmouseout=hidePreview;
}
}
我给你的这段代码 是ajax 技术实现链接预览的。你只要稍微修改一下,就可以用了。xmlhttpRequset返回网页本文,你把你要的数据过滤掉拿下来,再在你 的网页上利用innerHTML输出来就ok了。。。
你现在要做的就是看懂这段代码,稍微了解一下ajax技术。不懂可以问我。
var xhr=null;
var xPos,uPos;
function initAll(){
var allLinks=document.getElementsByTagName("a");
for(var i=0;i<allLinks.length;i++){
allLinks[i].onmouseover=showPreview;
allLinks[i].onmouseout=hidePreview;
}
}
function showPreview(evt){ //事件处理;
getPreview(evt);
return false;
}
function hidePreview(){
document.getElementById("previewWin").style.visibility="hidden";
}
function getPreview(evt){
if(evt){
var url=evt.target;
}
else {
evt=window.event;
var url=evt.srcElement;
}
xPos=evt.clientX;
yPos=evt.clientY;
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}
else{
if(window.ActiveXObject){
try{
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
}
}
}
if(xhr){
xhr.onreadystatechange=showContents;
xhr.open("GET",url,true);
xhr.send();
}
else{
alert("Sorry,but i can't create an XMLHttpRequest");
}
}
function showContents(){
var prevWin=document.getElementById("previewWin");
if(xhr.readyState==4){
if(xhr.status==200){
prevWin.innerHTML=xhr.responseText;
}
else{
prevWin.innerHTML="there was a problem with the request"+xhr.status;
}
prevWin.style.top=parseInt(yPos)+2+"px";
prevWin.style.left=parseInt(xPos)+2+"px";
prevWin.style.visibility="visible";
prevWin.onmouseout=hidePreview;
}
}
我给你的这段代码 是ajax 技术实现链接预览的。你只要稍微修改一下,就可以用了。xmlhttpRequset返回网页本文,你把你要的数据过滤掉拿下来,再在你 的网页上利用innerHTML输出来就ok了。。。
你现在要做的就是看懂这段代码,稍微了解一下ajax技术。不懂可以问我。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
匿名的提问只能给建议
使用HttpClient,获取页面数据,正则表达式分析数据,截取需要的信息
使用HttpClient,获取页面数据,正则表达式分析数据,截取需要的信息
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ajax,你可以去看看jquery框架,封装得很好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询