Web クローラーは、Web コンテンツを自動的に取得するプログラムであり、検索エンジンの重要な部分です。 Web クローラーは、検索エンジン用に World Wide Web から Web ページをダウンロードします。一般に、従来型クローラーと集中型クローラーに分類されます。
初心者の場合、クローラーの学習は段階的に行われ、最初の段階は、必要な基礎知識を習得することです。2 番目の段階は、他の人の真似をしてフォローすることです。コードのすべての行を理解した後の第 3 段階は、問題を解決するための独自のアイデアを持ち始め、独自にクローラー システムを設計できるようになります。
クロールに必要なテクノロジーには、プログラミング言語 (ここでは Python を例にします)、HTML の知識、HTTP/HTTPS プロトコルの基本的な知識、正規表現、データベースの知識、一般的な言語の使用などの習熟度が含まれますが、これらに限定されません。大規模なクローラーを使用および関与させる場合は、分散、メッセージ キュー、一般的に使用されるデータ構造とアルゴリズム、キャッシュ、さらには機械学習アプリケーションの概念も理解する必要があります。規模のシステムは多くのテクノロジーによってサポートされています。クローラーはデータを取得するためだけのものであり、そのデータの分析やマイニングが企業の意思決定に応用できる可能性があります。すること。
では、クローラーを書き始める前に、上記の知識をすべて学ばなければなりませんか?もちろん、そうではありません。Python コードを書ける限り、すぐにクロールを始めることができます。運転できる限り、もちろん、コードを書くことができます。車を運転するよりもはるかに安全です。
Python でクローラーを作成するには、まず Python を知り、基本的な構文を理解し、関数、クラス、および list や dict などの一般的なデータ構造での一般的なメソッドの使用方法を知る必要があります。これは基本的な入門です。次に、HTML はドキュメント ツリー構造であることを理解する必要があります。インターネット上に 30 分の HTML 入門チュートリアルがあります。次に、HTTP についての知識があります。クローラーの基本原理は、ネットワーク リクエストを通じてリモート サーバーからデータをダウンロードするプロセスであり、このネットワーク リクエストの背後にあるテクノロジは HTTP プロトコルに基づいています。入門レベルのクローラとしては、HTTP プロトコルの基本原理を理解する必要があります。HTTP 仕様は 1 冊の本に書き切れませんが、詳細な内容は理論と実践を組み合わせて後で読むことができます。
ネットワーク リクエスト フレームワークはすべて HTTP プロトコルの実装です。たとえば、有名なネットワーク リクエスト ライブラリ Requests は、HTTP リクエストを送信するブラウザをシミュレートするネットワーク ライブラリです。 HTTP プロトコルを理解すると、たとえば、Python には urllib、urllib2 (Python3 では urllib)、httplib、Cookie などのモジュールが付属しています。もちろん、これらの使用方法を直接スキップすることもできます。直接リクエストを行うには、HTTP プロトコルの基本的な内容を理解していることが前提となります。ここでおすすめしたい本は『HTTP図解』です。クロールダウンされるデータはほとんどが HTML テキストで、一部は XML 形式または Json 形式に基づくデータです。たとえば、JSON データを直接使用できるなど、各データ タイプのソリューションに精通している必要があります。 Python では、HTML データのモジュール json の場合は、BeautifulSoup、lxml などのライブラリを使用して処理できます。XML データの場合は、untangle や xmltodict などのサードパーティ ライブラリを使用できます。
初心者レベルのクローラでは、正規表現を学ぶ必要はありません。たとえば、データをクロールして戻った後、使用できることがわかったときに正規表現を学ぶことができます。正規の文字列操作 メソッドがまったく処理できない場合は、正規表現を理解しようとすると、半分の労力で 2 倍の結果が得られることがよくあります。 Python の re モジュールを使用して正規表現を処理できます。推奨されるチュートリアルをいくつか紹介します。 正規表現に関する 30 分間の入門チュートリアル Python 正規表現ガイド 正規表現の完全ガイド
データ クリーニングの後は、CSV ファイルなどのファイル ストレージを使用するか、データベースには、単に sqlite を使用するか、より専門的には MySQL または分散ドキュメント データベース MongoDB を使用します。これらのデータベースは Python に非常に適しており、既製のライブラリをサポートしています。 Python は MySQL データベースを操作し、Python を通じてデータベースに接続します
データのキャプチャからクリーニング、保存までの基本的なプロセスは完了しました。次は、多くの Web サイトで内部スキルをテストするときです。 -クローラー戦略。たとえば、リクエスト操作を制限したり、リクエスト速度を制限したり、さらには暗号化するために、あらゆる種類の奇妙な確認コードが使用されるのを防ぐために最善を尽くします。つまり、データを取得するコストを増やすことです。現時点では、HTTP プロトコルを深く理解し、一般的な暗号化および復号化アルゴリズムを理解し、HTTP の Cookie、HTTP プロキシ、および HTTP のさまざまな HEADER を理解する必要があります。爬虫類と反爬虫類は、タオが高くなるたびに、互いに愛し合い、殺し合うペアです。アンチクローラーに対処する方法について確立された統一されたソリューションはありません。それは、ユーザーの経験と習得した知識体系に依存します。これは、21 日間の入門チュートリアルだけで達成できるものではありません。
大規模なクロールを実行するには、通常、URL からクロールを開始し、ページ内で解析された URL リンクをクロールされる URL のセットに追加します。キューまたは優先順位を使用する必要があります。キューを使用して、一部の Web サイトを最初にクロールし、一部の Web サイトを後でクロールします。ページがクロールされるたびに、次のリンクをクロールするために深さ優先アルゴリズムを使用するか幅優先アルゴリズムを使用するか。ネットワーク要求が開始されるたびに、DNS 解決プロセス (URL を IP に変換する) が発生し、DNS 解決が繰り返されるのを避けるために、解決された IP をキャッシュする必要があります。非常に多くの URL が存在します。どの URL がクロールされ、どの URL がクロールされていないのかを判断するにはどうすればよいでしょうか。簡単に言うと、クロールされた URL を格納するために、大量の URL が見つかった場合です。このとき、辞書が占有するメモリ空間は非常に大きくなります。クローラーの効率を向上させたい場合は、ブルーム フィルターを使用してデータを 1 つずつクロールすることを検討する必要があります。マルチスレッド、マルチプロセス、コルーチン、または分散操作を使用する必要があります。
インターネット上にはクローラーのチュートリアルがたくさんありますが、原理は基本的に同じで、クロールする Web サイトを変更するだけで、Web サイトへのログインをシミュレートしたり、チェックをシミュレートしたりすることができます。などで、Douban の映画や書籍などをクロールします。問題に遭遇してから解決するまでの継続的な練習を通じて得られるこの種の成果は、本を読むこととは比べられません。
urllib、urlib2 (Python の urllib) Python の組み込みネットワーク リクエスト ライブラリ
urllib3: スレッドセーフな HTTP ネットワーク リクエスト ライブラリ
requests: 最も広く使用されているネットワークrequest ライブラリ、py2 および py3 と互換性があります
grequests: 非同期リクエスト
BeautifulSoup: HTML、XML 操作解析ライブラリ
lxml: HTML、XML を処理する別の方法
tornado: 非同期ネットワーク フレームワーク
Gevent: 非同期ネットワークフレームワーク
Scrapy: 最も人気のあるクローラーフレームワーク
pyspider: クローラーフレームワーク
xmltodict: 辞書に変換された XML
pyquery: jQuery のように HTML を操作します
Jieba: 単語の分割
SQLAlchemy: ORM フレームワーク
celery: メッセージキュー
rq: 単純なメッセージキュー
python-goose: HTML からテキストを抽出
「図解 HTTP」
「HTTP の決定版ガイド」
「コンピュータ ネットワーク: トップダウン アプローチ」
「Python で Web クローラーを書く」
「パイソン」ネットワーク データ収集》
《正規表現のマスター》
《練習のための Python 入門》
《独自の Web クローラーの作成》
《Crypto101》
《図解暗号テクノロジー 》
上記の内容は、Python クローラー テクノロジーを始めるにあたっての経験を共有するものであり、皆様のお役に立てれば幸いです。
関連する推奨事項:
以上がPython クローラーの開始に関する経験を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。