注意:提问者表示此答案在 Ebay 列表中不起作用。
除此之外,它工作得很好,它会激怒一些“网络开发者”(LOL)。我暂时把它留在这里。
我有一个偷偷摸摸的怀疑你没有拥有/控制外部链接站点,因此“从外部链接站点获取所有图像并在其他站点中显示它们”(如要求的那样),将受到跨域安全限制。
因此,为了重新获得“用户的权力”,只需使用http://query.yahooapis.com/。
jQuery 不是严格需要的。
示例 1:
使用类似 SQL 的命令:
select * from html
where url="http://stackoverflow.com"
and xpath='//div/h3/a'
以下链接将抓取 SO 以获取最新问题(绕过跨域安全公牛$#!7): http://query.yahooapis.com/v1/public/yql?q=select%20%2a%20from%
20html %20%0Awhere%20url%3D%22http%3A%2F%2Fstackoverflow.com%22%20%0Aand%20xpath%3D%27%2F%2Fdiv%2Fh3%2Fa%27%3B&format=json&callback=cbfunc
如您所见,这将返回一个 JSON 数组(也可以选择 xml)并调用回调函数:cbfunc
。
在您的情况下,您会寻找图像链接并将它们包含在您的页面中。
示例 2:
正如下面评论中所问的,这个纯 JavaScript示例不仅从 Ebay 商店获取图像 URL,它还获取产品标题和产品 URL(将它们显示为超链接图像,产品标题作为图片的标题)。因此,它还展示了如何动态构建 yql 字符串以及如何处理返回的数据。
function cbfunc(json){
if(json.query.count){
var data=json.query.results.div;
var i=0, l=data.length, htm='';
for(;i<l;i++){
htm+='<a href="'+data[i].a.href+'">' +
'<img title="'+data[i].a.img.title+'"' +
' src="'+data[i].a.img.src+'">' +
'</a>\n';
}
document.getElementById('output').innerHTML=htm;
} else {
alert('Error: nothing found'); return false;
}
}
function fetchEbayStore(url){
var yql="select a.href, a.img.src, a.img.title" +
" from html" +
" where url='" + url + "'" +
" and xpath='//td/div[@class=\"image\"]'";
yql="http://query.yahooapis.com/v1/public/yql?q=" +
encodeURIComponent(yql) +
"&format=json" +
"&callback=cbfunc";
getJSON(yql); //you need to provide getJSON or use a library
}
请参阅此 'quick 'n dirty' jsfiddle以查看上面的示例。请记住,这只是为了解释,而不是生产!
更多信息:阅读 yahoo 的yql文档,查看构造函数右侧的实时示例。