PythonのWebクローラー(上)

PythonのWebクローラー(上)

アウトライン

 

予備

ハンドルページへのログインの問題に対処するためにはJavaScript(JS)とどのように多く含ま方法1、

スクレイピング2、画面(ページのスクリーンショット)、データマイニング(データマイニング)、ウェブ収穫(収穫ページ)、ウェブクローリング、ウェブクローラ(履帯)、BOT(netbot)

3、ウェブクローラの利点:まず、何千またはページ百万ものを処理するために、第二には、従来の検索エンジンとは異なり、あなたはより正確なデータを得ることができます;第三に、APIと比較してデータを取得するために、ウェブクローラーより多くの柔軟性強いです

4、使用されるWebクローラー:市場予測、機械語翻訳、医療診断、ニュースサイト、記事、フォーラムの健康、マクロ経済、生物学的遺伝子、国際関係、健康フォーラム、芸術やその他のデータ収集と分析(分類と集約に)

データベース、ネットワークサーバ、HTTPプロトコル、HTML言語(ハイパーテキストマークアップ言語:5、ウェブクローラーはに関し  H yper  T EXT  M ARKUP  L逆知識anguage)、ネットワークセキュリティ、画像処理、データの科学

6、Webページアップ:HTMLのテキストレイヤー、CSSスタイル・レイヤー(C ascading  S tylE  S heets)、JavaScriptの実行層、画像レンダリング層

7、JavaScriptのアイデア:C言語の基本的な構文を学ぶ(1)、(2)は、参照データ型とJava言語、メモリ管理、(3)参考Scheme言語は、(第1級)、「第一級市民」に機能を強化します状態、(4)自己の継承メカニズムの言語、ベースのプロトタイプ(試作品)を学びます。なるJavaScriptの:(1)コア(のECMAScript)は、(2)ドキュメントオブジェクトモデル(DOM)、記述的アプローチウェブコンテンツとインターフェイス、(3)ブラウザ・オブジェクト・モデル(BOM)、構文言語の基本的なオブジェクトを記述します相互作用およびインターフェイスにブラウザに記載の方法。JavaScriptライブラリ:jQueryの、プロトタイプ、MooToolsは、等

8は、HTMLテキスト構造:HTMLの構造は、メモリ内に形成されたツリーのツリー構造であります

図9に示すように、HTMLは、構造及び文書の内容、完全にCSSの形態のための唯一の原因であるCSS基本構文セレクター:{:;:値;属性:値;プロパティ属性値}(tagAttributes)

画像ファイル、:10、ブラウザの負荷のページには、資源関連文書の数をロードする必要があるのJavaScriptファイル、CSSのファイルなど、他のページのURLアドレス情報へのリンク、

11、ブラウザ負荷例えば<IMG SRC =「cutkitten.jpg」>などのサーバリソースは、タグに従ってデータパケットを作成し、オペレーティングシステムは、読影にサーバにコマンド要求を送信し、取得したデータ。ブラウザはコードであり、コードは基本的な構成要素の数に分解することができ、それは書き換えられ、再利用のニーズに応じて変更することができます

12、.get_text():すべてのHTMLドキュメントの削除tagNameを、ハイパーリンク、段落役に立たない情報を。、ストレージ、最終的なデータ操作、.get_textを使用して印刷する通常レディ()!

原理分析と開発ツール

1、urllibは標準ライブラリ、urllib.request輸入urlopen

1.1は、標準ライブラリ関数urllibは:データ・ページ・リクエスト、クッキー処理、これらのユーザエージェント要求ヘッダとメタデータの関数として変化します

1.2、urlopen機能:オープンとネットワークリモートオブジェクトの取得から読み取るには、HTMLファイル、画像ファイル、およびその他のファイルストリームを読み取ることができます

2、BeautifulSoupライブラリー

2.1、XMLがされてeXtensible Markup Language:拡張マークアップ言語、HTMLはHTMLです:XML構文とゆるいHTML構文より厳密な、XMLデータ形式は、主に保存するために使用され、主にHTMLの編集ページに使用され、XML言語は、ハイパーテキストマークです補足言語、XMLをするように設計され、異なる目的のために設計されたが、送信および格納データコンテンツデータの焦点であり、HTMLをするように設計された表示データデータの外観の焦点です、

2.2、位置決めすることによってBeautifulSoupライブラリHTMLタグをフォーマットにし、情報の複雑なウェブを整理し、使用する簡単なPythonはオブジェクトの XML情報の構造を示します

2.3は、BeautifulSoupライブラリが作成さBeautifulSoupはオブジェクト:BS = BeautifulSoup。(Html.read() 'html.parser')、BS HTMLタグを(html.title、html.body.h1、html.body.div)

  第一引数:BeautifulSoupは、オブジェクトに基づいてHTMLのテキスト

  二番目のパラメータ:BeautifulSoupは、オブジェクトのオブジェクトインタプリタを作成し、「html.parser」、「lxmlの」 、「html5lib」

  1「lxmlの」、「html5lib 」 利点:フォールトトレランスと、場合HTMLタグ(tagNameを)異常がある:閉じられ、適切にネストされていません、欠失タグ、bodyタグ欠失頭、「lxmlの」、「html5lib」が一定であってもよいです最適化

  スピード3点の説明をクロール2「html.parser」、「lxmlの」、「html5lib」ウェブは、「lxmlの」>「html.parser」>「html5lib」は同じではありませんが、主要な問題とボトルネックは、ブロードバンドスピードですむしろ、クロール速度よりも!

2.4、ウェブクローラ異常に、以降のページのデータフォーマット異常、異常は、Webクローラを表示されます、urlopen()問題;第二に、印刷(bs.h1)問題

  A、urlopen()問題:

  1、ページがサーバー上に存在しません:HTTPError:「404 PageNot見つかり」、「505インターネットサーバーエラー」

  2、サーバが存在しません:URLErrorを

  二、印刷(bs.h1)問題:

  1、BeautifulSoupターゲットラベル例外は存在しません---なし>はAttributeError以来BeautifulSoupの件名ラベルが存在しない場合は、コールに、それは返されませんなし私たちは呼んでいない場合はNoneをサブタブ以下、あるだろうとAttributeError異常に2例を回避する必要があるので、!

  試して...除いて...他の...異常な増加のチェックポイント:アイデアは、例外を処理します。

urllib.request輸入urlopenから
urllib.errorインポートからHTTPError 
BS4インポートBeautifulSoupから


デフのgetTitle(URL):
    試してみる:
        HTML = urlopen(URL)
    HTTPErrorを除くEとして:
        リターンなし
    :試み
        "、bsObj = BeautifulSoup(html.read() lxmlの")
        タイトル= bsObj.body.h1 
    eとはAttributeErrorを除く:
        リターンなし
    リターンタイトル


タイトル=のgetTitle(" http://www.pythonscraping.com/pages/page1.html ")
タイトル==なしの場合:
    印刷("タイトルは")が見つかりませんでした
。他の
    プリント(タイトル)

3、HTML構文解析:BeautifulSoup、正規表現

3.1、柔軟性とのコードを読む強化のためのウェブクローラー:

  1、方向、ページのPC版APPのバージョンの比較、対比PC版の HTMLスタイルとのAPPのバージョン HTMLスタイルのを。より適切なバージョン、対応するバージョンのステータスを取得する第1の状態変更要求を選択します。

  2、二方向、JavaScriptのでロードされたファイル、WebページのJavaScript情報ファイルが含まれています

  3、3の方向は、URLリンクは、ターゲットURLのリンクから直接情報を取得し、ページのタイトルに含まれています

  4は、4つのターゲット情報の方向ソースサイト

3.2、BeautifulSoupの使用:CSSの構文属性値を見つけるためのラベルを、ラベルグループ、ナビゲーションツリー(BeautifulSoupタグツリー・ナビゲーション)

  1、bs.tagName

  2、bs.find_all(tagNameを、tagAttributes)

 

3、ウェブクローラを書く:scrapy

4、保管先情報:MySQLの

使用例

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/yinminbo/p/11992200.html