JavaScriptが新しいウィンドウでリンクを開くことができることは知っていますが、ウィンドウで開いたりユーザーに表示したりせずにWebページを開くことはできますか?私がやりたいのは、そのWebページを解析してテキストを取得し、それを変数として使用することです。
これは可能ですかなしサーバー側言語からの助けはありますか?もしそうなら、私がこれを達成できる方向に私を送ってください。
皆さんありがとう
XMLHttpRequest オブジェクトを使用してこれを行うことができます。ここに簡単な例があります
var req = new XMLHttpRequest();
req.open('GET', 'http://www.mydomain.com/', false);
req.send(null);
if(req.status == 200)
dump(req.responseText);
ロードされたら、req.responseTextメンバーで javascript正規表現 を使用して解析/スクレイピングを実行できます。
実際には、クロスプラットフォームの方法でXMLHttpRequestオブジェクトを取得するために、もう少し行う必要があります。例:
var ua = navigator.userAgent.toLowerCase();
if (!window.ActiveXObject)
req = new XMLHttpRequest();
else if (ua.indexOf('msie 5') == -1)
req = new ActiveXObject("Msxml2.XMLHTTP");
else
req = new ActiveXObject("Microsoft.XMLHTTP");
別の方法として、煩わしい作業をすべて省き、 jQuery または Prototype のようなライブラリを使用するだけでこれを処理できます。
same-Originポリシー のため、リクエストするページは、リクエストを行うページと同じドメインからのものである必要があります。リモートページを要求する場合は、サーバー側のスクリプトを介してプロキシする必要があります。
考えられる別の回避策は、Flashを使用して要求を行うことです。これにより、ターゲットサイトが適切に構成されたcrossdomain.xmlファイルで許可を与える場合、クロスドメイン要求が許可されます。
同じ起源のポリシーの主題に関する素晴らしい記事は次のとおりです。
どんなオリジンもオープンソースライブラリであり、純粋にJavascriptを使用してスクレイピングを行うことができます。また、「同じドメインの元」の問題も解決します。 http://www.whateverorigin.org/
$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://google.com') + '&callback=?', function(data){
alert(data.contents);
});
AJAXを使用します。これにより、問題のURLに対するGetリクエストが作成され、応答HTMLが返されます。 jqueryはこれを非常に簡単にします。
$.get("test.php");
アンドリュー
新しいウィンドウをiframeで開くことができます。
http://www.w3schools.com/TAGS/tag_iframe.asp
ただし、開いているサイトが別のURLからのものである場合、JavaScriptアクセスは制限されます。これは、クロスサイトスクリプティング攻撃を防ぐためです。