概要:ここベースのフロントでは、これはそれ爬虫類の基本原則を見てみましょう!
我々はそれを置く理由クモと見られ、多くの昆虫、爬虫類がありますか?私たちは、ページノードのネットワークとして見ることができるので、ページ間のリンク関係は、ノード間の接続と見られて。これは、蜘蛛の巣のようではないですか?ノードの上に登るをクロールし、(他のウェブページへのリンクを介して利用可能)次のノードに接続ノードを降りることができた後、何度も何度も、あなたはすべてのノードを登ることができます。
爬虫類のまず、基本的な考え方
簡単に言え、爬虫類でページ取得から情報を抽出するために、データを保存するために自動化プログラムを。
1.取得のページ
私たちは、ページのソースコードを取得するために参照する「ページを取得する」と言います。
私たちは、Webサーバにリクエストを送信すると、返され、前にも言ってきたレスポンスボディは、ページのソースコードです。だから、これの重要な一部であり、どのようにサーバに要求を構築するために、その後、応答を受信して解析します。
我々は、要求と応答のライブラリを提供するために使用することができる操作のHTTP要求データの構成を実現するために(例えばurllibは、要求、等)のPython提供するライブラリを使用することができる発現は、対応する、我々は、データ構造解析する必要ボディ部分を、すなわちそれは(これはソースコードである)であってもよいです。
2.抽出情報
ソースコードを取得した後、我々は有用なデータを抽出するために、ソースコードを分析する必要があります。2つの一般的な方法があります。
- 正規表現:エラーを起こしやすいユニバーサル方法が、比較的複雑で、。
- ライブラリを使用してください:一部のWebライブラリファイルには、ページ情報(例えば、抽出するための属性、CSSセレクタやXPathをノードも美しいスープ、pyquery 、lxmlのなど)。これらのライブラリは、迅速かつ効率的にデータを抽出することができます。
3.保存したデータ
有用な情報を抽出した後、次の使用のために、データを保存する必要があります。3一般的な方法があります。
- TXTまたはJSONテキストとして保存します
- などのMySQL、MongoDBのデータベースに保存します
- (SFTP、等を介して)リモートサーバに保存
4.オートメーション
自動化されたクローラは、特に高速の使用シナリオを必要とする大量のデータのために、例外処理、および他のエラーリトライ動作、自動化度の高いクロール。
第二に、爬虫類は、どのデータをつかむことができます
それはHTTPまたはHTTPSプロトコルに基づいている限り、URLのデータが対応する、クロールできる有します
1. HTMLコード
私たちの最も頻繁にクロールコンテンツであるHTMLコードに対応する最も一般的な従来のWebページ、。
2. JSON文字列
一部のページには、HTMLコードが、JSON文字列を返されません。APIインタフェースは、このフォームを使用します。
3.バイナリデータ
そのようなので、上の画像、オーディオ、ビデオ、およびなど。
ファイル拡張子の4すべての種類
このようなようにCSS、JavaScriptの設定ファイルとなど。
三、JavaScriptのレンダリングページ
時には我々は、Webページのソースコードをクロールし、実際のブラウザで見てurllibはやリクエストを使用するのと同じではありません。今、ますますAjaxをWebフロントエンドとモジュラーツールのラップ犬を使用して、ページではJavaScriptによってレンダリングすることができるので、これは、生のHTMLコードは、単に空のシェルである、です。
1 <!DOCTYPE HTML > 2 < HTML > 3 < ヘッド> 4 <Mのイータのcharset = "UTF-8” > 5 <タイトル>これはOemo </ タイトル> 6 </ ヘッド> 7 < ボディ> 8 < DIV ID =」コンテナ」> 9 </ divの> 10 </ ボディ> 11 < スクリプトSRC =」app.js 」> <> 12 </ HTML >
上記のコードの本体、サイト全体のレンダリングを行うapp.jsを飲んだ後だけ1ノードコンテナーのIDが、ボディ、。ブラウザがページを開くと、HTMLコンテンツが最初にロードされ、ブラウザはapp.jsファイルの導入を見て、そのファイルを要求し続けています。ファイルを取得した後、それによって、HTMLノードを変更し、JavaScriptコードのいずれかを実行し、それらに追加し、完全なインタフェースを取得します。
ライブラリの要求をurllibは使用するか、ページを要求すると、あなただけのブラウザの内容を見ることができない、自然に、JavaScriptファイルをロードするために続行されません、HTMLコードを取得することができます。
ライブラリのソースコードとブラウザページのソースコードを取得するための基本的なHTTP要求と矛盾しているので、我々は背景のAjaxインターフェースを分析することができます、また、シミュレーションのレンダリングを実装するためにセレン、スプラッシュや他のJavaScriptライブラリを使用することができます。