Python3クローラーでのAjaxの使用

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

Python3クローラーでのAjaxの使用
pythonでのwheelの使用法
pythonでのタプルの使用法
pythonでのリストの意味と使用法
Pythonでの辞書の詳細な使用法
pythonでのosパッケージの使用
pythonでのrbの意味を理解する
PythonでのMongoDBの使用
pythonでのadbの機能は何ですか
Linuxでのいくつかの正規表現の使用
PythonはDoudizhuでカードのシャッフルを実装します
Linuxでのいくつかの正規表現の使用
Pythondecimalモジュールの使用法の詳細な説明
Linuxでのいくつかの正規表現の使用
ubuntuでpythonをアンインストールした結果、非常に
Pythonの基盤を統合する(4)
Python(7)の基盤を統合する
Pythonのタプルの添え字
Python(6)の基盤を統合する
PythonクローラーのJSの分析
Python(5)の基盤を統合する
Pythonでのパッケージの導入を理解する方法
Pythonの基盤を統合する(3)
pythonで円の領域を見つける方法
Pythonのハードコア操作を1分で学ぶ
Pythonの対数法の要約
Pythonイールドの使用例の分析
Python開発でのパンダの使用
Pythonは中国語の4つの車輪を処理します
Python開発でのnumpyの使用
地主取引のPythonシミュレーション
Pythonの用途は何ですか
Pythonクローラーのスクレイピーシミュレーションログイン
pythonクローラーのMongodbとpythonの相互作用
Pythonの数字は何ですか?
python定義クラスの簡単な使用法
Pythonのモジュールについて話す
Python文字列プーリングの前提
Python3.8の新機能の秘密
パイソンクローラー開発の学習パス
Pythonの父がMicrosoftに加わる
python accesshdfsの操作
pythonを実行するメソッドを終了します
pythonmysqlのパラメータ化の説明
Pythonはスタックの構造を実装できますか?
pythonインタラクティブモードの基本を学ぶ
pythonでのJWTユーザー認証の実装
pythonの下部にあるロジスティック回帰
PythonはTowerofHanoiゲームを解決します
pythonの複数のバージョンの競合を解決します
python変数の範囲は何ですか
Pythonは分数シーケンスの合計を実装します
Pythonの基礎を学ぶ2日間
pythonのid関数は何ですか
python標準ライブラリのglobの分析
python3のピップパスはどこにありますか
pythonにdjangoモジュールをインストールする方法
Python言語の本質:Itertoolsライブラリ
python言語の利点は何ですか
pythonインスタンス化オブジェクトの特定のメソッド
python3はマスク描画の機能を実現します