Ajax、フルネームは非同期JavaScriptとXML、つまり非同期JavaScriptとXMLです。これはプログラミング言語ではありませんが、JavaScriptを使用してサーバーとデータを交換し、Webページの一部を更新すると同時に、ページが更新されず、ページリンクが変更されないようにするテクノロジです。
従来のWebページの場合、コンテンツを更新する場合はページ全体を更新する必要がありますが、Ajaxを使用すると、ページを完全に更新せずにコンテンツを更新できます。このプロセスでは、ページは実際にバックグラウンドでサーバーとのデータ対話を実行します。データが取得された後、JavaScriptを使用してWebページが変更され、Webページのコンテンツが更新されます。
W3Schoolでいくつかの例を体験して、その感触をつかむことができます:http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_send.asp。
1. 紹介例
Webを閲覧すると、多くのWebページが下にスクロールしてより多くのオプションを表示していることがわかります。たとえば、Weiboを例として取り上げます。私の個人的なホームページを例として取り上げましょう:https://m.weibo.cn/u/2830678474、Weiboページに切り替えて、下に移動し続けると、Weiboをいくつかドロップした後に見つけることができます。ダウンはなくなり、代わりに読み込みアニメーションが表示されます。しばらくすると、新しいWeiboコンテンツが引き続き下に表示されます。このプロセスは、図6-1に示すように、実際にはAjax読み込みのプロセスです。
ページが完全に更新されていないことに気付きました。つまり、ページ上のリンクは変更されていませんが、ページに新しいコンテンツがあります。これは、後で投稿された新しいWeiboです。これは、新しいデータを取得し、Ajaxを介して提示するプロセスです。
2. 基本
Ajaxを事前に理解した後、その基本原則について詳しく学びましょう。 AjaxリクエストをWebページの更新に送信するプロセスは、次の3つのステップに簡単に分けることができます。
(1) リクエストを送信します;(2)コンテンツを解析します;(3)Webページをレンダリングします。
これらのプロセスを以下に詳しく紹介します。
リクエストを送信
JavaScriptはページのさまざまなインタラクティブ機能を実装できることはわかっていますが、Ajaxも例外ではなく、JavaScriptによっても実装されています。実際、次のコードが実行されます。
varxmlhttp;if(window.XMLHttpRequest){//codeforIE7+,Firefox,Chrome,Opera,Safari
xmlhttp=newXMLHttpRequest();}else{//codeforIE6,IE5
xmlhttp=newActiveXObject("Microsoft.XMLHTTP");}
xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;}}
xmlhttp.open("POST","/ajax/",true);
xmlhttp.send();
これはJavaScriptのAjaxの最下位レベルの実装です。実際、新しいXMLHttpRequestオブジェクトを作成し、onreadystatechangeプロパティを呼び出してリスナーを設定し、open()メソッドとsend()メソッドを呼び出してリンク(つまりサーバー)に要求を送信します。 Pythonでリクエストを送信した後、レスポンスの結果を取得できますが、JavaScriptでリクエストの送信を完了します。モニタリングが設定されているため、サーバーがレスポンスを返すと、onreadystatechangeに対応するメソッドがトリガーされ、このメソッドで応答の内容を解析するだけです。
コンテンツの解析
応答を取得した後、onreadystatechange属性に対応するメソッドがトリガーされます。このとき、xmlhttpのresponseText属性を使用して応答内容を取得できます。これは、リクエストを使用してPythonでサーバーへのリクエストを開始し、応答を取得するプロセスに似ています。その場合、返されるコンテンツはHTMLまたはJSONである可能性があり、さらに処理するためにメソッドでJavaScriptを使用するだけで済みます。たとえば、JSONの場合、解析および変換できます。
ウェブページをレンダリング
JavaScriptには、Webページのコンテンツを変更する機能があります。応答コンテンツを解析した後、JavaScriptを呼び出して、解析されたコンテンツに基づいてWebページを処理する次のステップを実行できます。たとえば、document.getElementById()。innerHTMLなどの操作を使用して、要素のソースコードを変更し、Webページに表示されるコンテンツを変更できます。この操作はDOM操作、つまりドキュメントWebページとも呼ばれます。変更、削除などのドキュメント操作。
上記の例では、document.getElementById( "myDiv")。innerHTML = xmlhttp.responseTextは、ID myDivのノード内のHTMLコードをサーバーから返されたコンテンツに変更し、サーバーから返された新しいデータがmyDiv要素内に表示されるようにします。 Webページの一部が更新されているようです。
これらの3つのステップは、実際にはJavaScriptによって完了し、JavaScriptによって、要求、解析、およびレンダリングのプロセス全体が完了します。
Weiboのプルダウンリフレッシュをもう一度思い出してください。これは実際にはJavaScriptがサーバーにAjaxリクエストを送信し、新しいWeiboデータを取得して解析し、Webページにレンダリングすることです。
したがって、実際のデータはAjaxリクエストから何度も取得されることがわかっています。このデータを取得する場合は、これらのリクエストがどのように送信されるか、どこに送信されるか、どのパラメータが送信されるかを知る必要があります。これを知っている場合、Pythonを使用してこの送信操作をシミュレートし、結果を取得できますか?
次のセクションでは、これらのバックグラウンドAjax操作を確認する場所、送信方法、および送信されるパラメーターについて理解します。
上記は、Python3クローラーでのAjaxの使用法の詳細な内容です。Python3でのAjaxの詳細については、ZaLou.Cnの他の関連記事に従ってください。
Recommended Posts