まず、爬虫類ものです
また、「ウェブクローラ」として知られている爬虫類は、自動的にインターネットやウェブコンテンツのダウンロードされたプログラムにアクセスする機能です。百度とGoogleは、インターネット上の膨大な量の情報を取得するために、強力なウェブクローラであり、ユーザーが品質の検索サービスを提供するために、その後、クラウドに保存されているようにそれは、また、検索エンジンの基礎です。
第二に、使用爬虫類ものです
あなたは、検索エンジンの会社をやってに加えて、爬虫類はそれが何であるか、使用を学ぶ、と言うかもしれませんか?ハハ、誰かが最終的にはポイントに尋ねました。類推それは:会社がユーザーフォーラムを構築し、多くのユーザーはそうで、自分の経験と話してフォーラムにメッセージを残します。今準備中の製品アップデートの次の反復のために、利用者の嗜好を分析し、ユーザーのニーズを理解する必要があります。だから、データを取得する方法を、もちろん、フォーラムからわずかウェブクローラを取得する必要があります。だから、Baiduは、GOOGLEに加えて、多くの企業が給与にエンジニアの爬虫類を雇っています。あなた「爬虫類のエンジニアは」仕事と給料の数を見て、どんな現場での検索にはどのように人気のあるクローラを理解することの範囲です。
第三に、爬虫類の原則
開始要求:応答先サイトのサーバの要求(リクエスト)を待つを送信するためにHTTPプロトコルを介して標的部位。
コンテンツ取得応答:サーバーが正常な応答することができた場合は、応答を取得します。応答内容はように、応答の内容は、HTML、JSON文字列、(画像など)のバイナリデータであってもよい取り込みたいページの内容である、と。
分析コンテンツは:コンテンツは、HTMLによって得ることができる正規表現を解決することができ、ページの構文解析ライブラリ、JSONであってもよい、直接JSONオブジェクトを解析するために変換することができる。バイナリデータであってもよいし、さらなる処理のために保存することができます。
データストレージ:データ解析が完了した後、保存されます。テキストドキュメントをデータベースに保存することができますよう両方を節約することができます。
四、Pythonの爬虫類例
情報爬虫類の定義の前に導入され、原則としての役割は、私は小さなパートナーの多くは爬虫類に興味があることを始めて、それを試して準備ができているがあると信じています。そして今、「ドライ」の上、Pythonコードの爬虫類のシンプルな一枚を貼り付けする準備ができて:
1.準備作業:Python環境をインストールし、PYCHARMは、ソフトウェアをインストールし、MySQLデータベース、新しいデータベース・試験、爬虫類家の結果を格納するために使用されるテーブルの構成で試験[SQL文のインストール:表の家(価格はvarchar(88)を作成し単位はvarchar(88)、領域VARCHAR(88));]
2.爬虫類の目標:単位面積あたりの価格をクロールし、オンラインリスト内のすべてのリンクを家を借りるし、データベースへのクローラの構造を保存します。
3.爬虫類のソースコード:以下の
インポート要求#のリクエストURLのページコンテンツ から BS4 インポート BeautifulSoup 位ページ要素を取得 インポート pymysql #のリンクデータベース のインポート時#の時間関数 のインポート lxmlのの#の構文解析ライブラリー(HTML \のXML解析のためのサポート、サポートXPATH解析) #1 、GETのリクエストによって:get_page機能の役割をその後、取得したリンクされたコンテンツのURLの方法、およびBeautifulSoup処理可能な形式に統合 DEF get_page(URL): 応答 = requests.get(URL) スープ = BeautifulSoup(response.text、「lxmlの」) を返すスープ #のアクションget_links機能を:ゲットすべての賃借人のリンクのリスト DEFのget_links(LINK_URL): スープは = (LINK_URL)get_pageを links_div = soup.find_all(' div要素'、class_が= " PIC-パネル" ) リンク [div.a.get(= ' HREF ')のためのdiv にlinks_div] リターンリンク #の価格、ユニット、エリアなど:賃貸情報のページを取得:get_house_info機能の役割はにある DEF get_house_info(house_url): スープ = get_page(house_url) 価格。 = soup.find(' スパン'、class_が= ' 合計').textの ユニット = soup.find(「スパン」、class_が= 「ユニット」).text.strip() 面積 = 「テスト」 #このエリアには、我々はテストするためのフィールドテストカスタマイズ 情報 = { 「価格」:価格、 「単位」:単位、 「領域」:面積 } 戻り先 #の構成情報は、データベースに辞書に書き込まれ 、データベース = { 「ホスト」:「127.0.0.1 」、 'データベース':' 試験' ' ユーザー':' ルート' ' パスワード':' ルート' ' 文字セット':' utf8mb4 " } #のリンクデータベースのDEFのget_db(設定):リターン pymysql.connect(** 設定)#得られたデータベースクローラにデータを挿入DEF 挿入(DB、ハウス): 値 = " '{}'、" * 2 + "「{} 」 sql_values = values.format(ハウス[ ' 価格' ]、ハウス[ ' 単位' ]、ハウス[ ' 領域' ]) SQL = "" " INSERT INTOハウス(価格、ユニット、エリア)の値({}) " "" .format(sql_values) カーソル = db.cursor() cursor.execute(SQL) db.commit() #メインプロセス:1. 2.データベースへの接続最初のループ3.FORからURLの個々のリストのリストを取得しますURLデータベースに1で開始取得特定の情報(価格など)4. 1をリスト(のpython学習交換基631 441 315) デシベル = get_db(データベース) リンク = get_links(「https://bj.lianjia.com/zufang/ 」) についてリンクでのリンク: time.sleep( 2 ) 家 = get_house_info(リンク) を挿入(デシベル、家)
まず、Pythonのクローラーで書かれた「工欲善其事必先利其器」は、同じ理由で、爬虫類を書き込むプロセスは、ファイルライブラリの多様性をインポートする必要があり、そして私たちは爬虫類の完了を支援するために、これらの便利なライブラリです作品のほとんどは、私たちはすることができ、関連する機能の移転のための言い訳を必要としています。インポート形式は、インポート・ライブラリーのファイル名です。これは、ここで注意しなければならない、カーソルがライブラリ・ファイル名、プレスCTRL + ALTにインストールするための重要な手段を配置することができ、PYCHARMでライブラリをインストールすることで、ライン(ピップは、ライブラリファイル名をインストール)がインストールされている、場合に命令することができますインストールが失敗した場合や、インストールされていない場合、フォローアッププログラムは確かに爬虫類のエラーになります。このコードでは、5つの要素は、プログラムに関連するライブラリの前に導入されている:URLページのコンテンツを要求するための要求を、BeautifulSoupは、ページ要素を解析するために使用;データベースに接続pymysql;時間は、様々な時間関数が含まれ、lxmlのは、構文解析ライブラリですファイルのHTML、XML形式が、それを解析するためにもXPATH解析をサポートしています。
第二に、私たちは、爬虫類の最後のメインプログラムコードからプロセス全体を見始めます。
データベースに接続することによりGet_db機能。深いget_db機能に、データベース接続がconnect関数Pymysqlを呼び出すことによって達成され見ることができます。そして、ここで** SETINGはPythonのキーワード引数を収集するための方法である、我々は、データベース接続情報が辞書データベースに書き込まれます置きますレーンは、辞書の情報は、引数を作るために接続します。
get_linksでは、すべてのホームネットワークの賃貸住宅物件のチェーンへのリンクのために機能します。リスト形式ですべてのリストの存在下でのリンクをリンクします。get_linksはリクエストにより、ホームネットワークのホーム・ページ要求の連鎖の内容を取得するために機能し、それが処理できる形式に、BeautifuSoupインターフェース・フォーマットでコンテンツを整理します。最後に、(つまり、href属性の内容である)すべてのdivのスタイルは、電気泳動find_all機能によって画像が含まれており、その後、コンテンツのハイパーリンク]タブ(A)を取得するために見つけるすべてのdivのスタイルは、ループのために、すべてのハイパーリンクがに格納されて含まれていリンクのリストインチ
FORループを介してそれを通してリンク内のすべてのリンク(リンクの1つがあるような:https://bj.lianjia.com/zufang/101101570737.html)
検索機能要素の位置を使用してユニット、エリア情報ごとに、価格3)リンクを得る、同じ方法及び2)を使用して、この情報は、内部辞書情報に書き込まれます。
家にデータベース表に結果の情報の情報にリンクを挿入する関数を呼び出します。ディープinsert関数に、我々はそれがカーソル機能カーソルデータベース()し、応答機能を実現するためにデータベース操作をコミットすることによって、SQLステートメントの実装次第であることを知ることができます。ここでは、SQL文の文言は、これは、多重化機能を容易にするために行われ、形式にフォーマット機能を使用して、かなり特殊です。
最後に、爬虫類のコードを実行するには、データに書き込まれているすべてのリストのホームネットワークホームの連鎖を見ることができます。(注:テストI手動で指定されたテスト文字列)
追伸:実際には、Pythonは難しい爬虫類、全体のプロセスに精通した後、爬虫類ではないので、上のSQL文とを構築する方法は、そのようなページ要素を取得する方法として、いくつかの詳細に注意を払う必要があります。問題を抱えてパニックしないでください、私たちは最終的に期待される構造を取得し、1 BUGずつを一掃することができますIDEのヒントを参照してください。