注:質問者は、この答えがEbayリストの中で機能しないと述べました。
それ以外は、それは非常にうまく機能し、一部の「Web開発者」(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を選択することもできます)を返し、callback-functionを呼び出しますcbfunc
。
あなたの場合、あなたは画像リンクを探してあなたのページにそれらを含めるでしょう。
例2:以下のコメントで尋ねられるように、純粋なJavaScript
のこの例は、Ebayストアからimage-urlをフェッチするだけでなく、 product-titleとproduct urlもフェッチします(product-titleが画像のタイトル)。そのため、yql-stringを動的に構築する方法と、返されるデータを使用して何ができるかも示しています。
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
}
上記の例の動作を確認するには、この「クイック」「ダーティ」jsfiddleを参照してください。これは説明のためだけのものであり、本番用ではないことを忘れないでください。
詳細については、yahooのyql -documentationを読んでください。コンストラクターの右側にある、実際の例を参照してください。